home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1988 / 01 / slite / slite3.for < prev    next >
Text File  |  1987-09-07  |  77KB  |  2,416 lines

  1.       PROGRAM LITE
  2.       REAL X0(4,30,7),BETA(4,30,2),PSI(4,30,2),RHO(4,30),XN(30,400,3),
  3.      1     DAYF(3,400),DELF(400),F(4,30,30),WSOL(3,400),DSOL(4,30), 
  4.      2     TAU(10),DW(5),LL(4,30,9),A(4,30),COEF(30,30),LS(3),Y(3), 
  5.      3     YM(3),XY(3,4,2),LUM(4,30),AK2(10),X(3),COFB(30,1),FS(30),
  6.      4     ALPHA(30),FR(30),AIK(30,400),LUMF(30,400),LUMI(30,400),
  7.      5     XYW(5,2,2),XSUN(5,4,2),ANG(5),OHW(5),OHREF(5), 
  8.      6     RING(5),OHTAU(5),RS(4),WW(5),WH(5),WCX(5),WCY(5),
  9.      8     W(12),BW(12),
  10.      9     PLTTMP(4,3)
  11.       INTEGER IDS(30),IOB(4,30,30),JOB(30,30,5),KSUN(4,30),NW(6),TZN, 
  12.      1     KOB(4,30,30),KD(30,11,11),ICO(30),JCO(30,5),NM(30),NN(30), 
  13.      2     ISUN(5),NUM(30),IJOB(26),KJOB(4,30,30),KKOB(4,30,30),
  14.      3     IOH(5),KOH(5),ISTART(5),ITYPW(5),ISD(5), 
  15.      4     IMG(5,20,20),ICNR(5,4) 
  16.       INTEGER*4 ISEED
  17.       COMMON /BLK1/ X0,LL,XDP,YDP 
  18.       COMMON /BLK2/ NW,PI,IOB,ICLD,ISEED,NBUNDL,A,KJOB
  19.       COMMON /BLK3/ AK2,TAU,NC
  20.       COMMON /BLK4/ BETAS,LS,AUX(3),GRNDL 
  21.       COMMON /BLK5/ ICO,JCO,NSW 
  22.       COMMON /BLK6/ XN,AIK,LUMF,LUMI,WSOL,DAYF,DELF,IMG 
  23.      2              ,ICNR 
  24. C     ISNGRD - DIMENSION OF IMG(), DIRECT SUN IMAGE ARRAY 
  25.       ISNGRD=20 
  26.       PI=ATAN(1.)*4.
  27.       RAD=PI/180. 
  28.       NBUNDL=2000 
  29.       ISEED=123456 
  30. C INID=1.. SIMPLIFIED INPUT FOR RECTANGULAR ROOMS 
  31. C          IWRITE=1.. ILLUMINATION DATA FOR WORKING SURFACE ARE PRINTED 
  32. C                =2.. DAYLIGHT FACTORS ARE PRINTED
  33. C                =3.. ILLUMINATION AND DAYLIGHT FACTORS ARE PRINTED 
  34. C INID=2.. FULL INPUT FOR ARBITRARY ROOMS,
  35. C          IWRITE=1.. BRIEF OUTPUT (DATA FOR WORKING SURFACE ONLY)
  36. C                =2.. DETAILED OUTPUT (DATA FOR ALL SURFACES) 
  37. C IPLOT=0.. NO PLOT IS BEING GENERATED
  38. C      =1.. ILLUMINATION LEVELS ARE PLOTTED (EQUALLY-SPACED LINES)
  39. C      =2.. ILLUMINATION LEVELS ARE PLOTTED (EQUALLY-SPACED LEVELS) 
  40. C      =3.. DAYLIGHT FACTORS ARE PLOTTED (EQUALLY-SPACED LEVELS)
  41. C NUMIT= # OF ITERATIONS
  42. C IOH=0.. NO OVERHANGS, 
  43. C    =1.. OVERHANG ON TOP,
  44. C    =2.. OVERHANGS ON BOTH SIDES,
  45. C    =3.. OVERHANG ON BOTTOM ONLY,
  46. C    =4.. OVERHANGS ON TOP AND BOTH SIDES,
  47. C    =5.. OVERHANGS ON ALL FOUR SIDES.
  48. C IWMOD=1.. INPUT IS SUN POSITION, SOLAR RADIATION, ETC., 
  49. C        =2.. INPUT IS LATITUDE,LONGITUDE,TIME,ETC. 
  50. C ITYPW=1.. CLEAR WINDOW, 
  51. C      =2.. WINDOW WITH SHADING DEVICE, 
  52. C      =3.. DIFFUSING WINDOW. 
  53. C ISD  =1.. SHEER CURTAIN 
  54. C INPUT ROUTINES
  55.       OPEN(UNIT=5,FILE='SLITE.IN',STATUS='OLD')
  56.       OPEN(UNIT=7,FILE='SLITE.OUT',STATUS='NEW')
  57. C    *     RECL=200)
  58.       OPEN(UNIT=8,FILE='SLITE.PLT',STATUS='NEW')
  59.       CALL LOGO(6)
  60.       READ(5,*) INID,IWMOD,NUMIT,IWRITE,IPLOT 
  61.       IF(INID.NE.1) GOTO 31 
  62. C *** SIMPLIFIED INPUT - LIMITED TO RECTANGULAR ROOM WITH 
  63. C *** RECTANGULAR WINDOWS, AND SIMPLE OUTSIDE OBSTRUCTIONS
  64. C ROOM SIZE AND LOCATION
  65.       READ(5,*) RW,RD,RH
  66.       READ(5,*) RE,RO 
  67. C WINDOW DATA 
  68. C NWINDO = NUMBER OF WINDOWS, 
  69. C LOCW=1.. WINDOWS ARE IN THE FRONT WALL, 
  70. C     =2.. WINDOWS ARE IN THE CEILING (SKYLIGHTS) 
  71.       READ(5,*) NWINDO,LOCW 
  72. C INITIALIZATION OF AUXILIARY VALUES
  73.       IF (NWINDO.GE.1.AND.NWINDO.LE.5) GOTO 4010
  74.       WRITE(7,8002) 
  75.       STOP
  76. 4010  NSS=0 
  77.       NC=0
  78.       NSW=0 
  79.       ND=0
  80.       DO 4000 I=1,NWINDO
  81.       IDS(I)=0
  82.       OHW(I)=0. 
  83.       RING(I)=0.
  84.       OHREF(I)=0. 
  85.       KOH(I)=0
  86.  4000 OHTAU(I)=0. 
  87. C DATA FOR EACH WINDOW
  88.       DO 4100 I=1,NWINDO
  89.       READ(5,*) WW(I),WH(I),WCX(I),WCY(I),NM(I),NN(I),RHO(1,I)
  90.       READ(5,*) ITYPW(I),AK2(I),TAU(I),DW(I),IOH(I) 
  91.       NC=NC+1/ITYPW(I)
  92.       NSW=NSW+ITYPW(I)/2-ITYPW(I)/3 
  93.       ND=ND+ITYPW(I)/3
  94.       IF (LOCW.EQ.1) IDS(I)=2 
  95.       ALPHA(I)=1. 
  96.       ISD(I)=1
  97.       IF(ITYPW(I).NE.2) GOTO 4050 
  98. C SHEER CURTAIN 
  99.       READ(5,*) ALPHA(I)
  100.  4050 IF(ITYPW(I).EQ.3) ALPHA(I)=0. 
  101.       IF(IOH(I).EQ.0) GOTO 4100 
  102. C OVERHANG DATA 
  103.       READ(5,*) OHW(I),RING(I),OHREF(I),KOH(I),OHTAU(I) 
  104.       IF (KOH(I).EQ.0) OHTAU(I)=0.
  105.  4100 CONTINUE
  106. C WINDOW ORDERING (PUT IN SEQUENCE  CLEAR--SHADED--DIFFUSING) 
  107.       IF(ITYPW(NWINDO).GE.ITYPW(1).OR.NWINDO.GT.2) GOTO 4110
  108.       AAA=AK2(1)
  109.       AK2(1)=AK2(2) 
  110.       AK2(2)=AAA
  111.       AAA=TAU(1)
  112.       TAU(1)=TAU(2) 
  113.       TAU(2)=AAA
  114.       AAA=DW(1) 
  115.       DW(1)=DW(2) 
  116.       DW(2)=AAA 
  117.       AAA=ALPHA(1)
  118.       ALPHA(1)=ALPHA(2) 
  119.       ALPHA(2)=AAA
  120.       AAA=OHW(1)
  121.       OHW(1)=OHW(2) 
  122.       OHW(2)=AAA
  123.       AAA=RING(1) 
  124.       RING(1)=RING(2) 
  125.       RING(2)=AAA 
  126.       AAA=OHREF(1)
  127.       OHREF(1)=OHREF(2) 
  128.       OHREF(2)=AAA
  129.       AAA=OHTAU(1)
  130.       OHTAU(1)=OHTAU(2) 
  131.       OHTAU(2)=AAA
  132.       AAA=WW(1) 
  133.       WW(1)=WW(2) 
  134.       WW(2)=AAA 
  135.       AAA=WH(1) 
  136.       WH(1)=WH(2) 
  137.       WH(2)=AAA 
  138.       AAA=WCX(1)
  139.       WCX(1)=WCX(2) 
  140.       WCX(2)=AAA
  141.       AAA=WCY(1)
  142.       WCY(1)=WCY(2) 
  143.       WCY(2)=AAA
  144.       AAA=RHO(1,1)
  145.       RHO(1,1)=RHO(1,2) 
  146.       RHO(1,2)=AAA
  147.       III=ITYPW(1)
  148.       ITYPW(1)=ITYPW(2) 
  149.       ITYPW(2)=III
  150.       III=IOH(1)
  151.       IOH(1)=IOH(2) 
  152.       IOH(2)=III
  153.       III=KOH(1)
  154.       KOH(1)=KOH(2) 
  155.       KOH(2)=III
  156.       III=NM(1) 
  157.       NM(1)=NM(2) 
  158.       NM(2)=III 
  159.       III=NN(1) 
  160.       NN(1)=NN(2) 
  161.       NN(2)=III 
  162. C REFLECTIVITIES AND DISCRETIZATION FOR WALLS 
  163. C IF LOCW=1, SEQUENCE IS WINDOWS-LEFT WALL-REAR WALL-RIGHT WALL-CEILING-
  164. C FLOOR-FRONT WALL; IF LOCW=2, FRONT WALL AND CEILING ARE INTERCHANGED
  165. C TO PLACE SURFACE WITH CUT-OUT (WINDOWS) LAST
  166.  4110 DO 4120 I=1,6 
  167.       IC=I+NWINDO-1 
  168.       IF(I.EQ.1) IC=NWINDO+2*(4-LOCW) 
  169.       IF(I.EQ.5) IC=NWINDO+2*(1+LOCW) 
  170.  4120 READ(5,*) NM(IC),NN(IC),RHO(1,IC) 
  171. C WORKING SURFACE 
  172.       READ(5,*) NM(NWINDO+7),NN(NWINDO+7),WSE 
  173. C DESCRIPTION OF OUTSIDES 
  174.        READ(5,*) IOPP 
  175. C OPPOSING BUILDING 
  176.       IF(IOPP.EQ.1) READ(5,*) HO,WO,XO,DO,RHO(2,3)
  177. C SUBJECT BUILDING
  178.       READ(5,*) HS,WS,XS,RHO(2,1) 
  179. C SET AUXILIARY VALUES
  180.   
  181.       NW(2)=IOPP+2
  182.       NWC=5 
  183.       NWO=1 
  184.       NWS=1 
  185.       IF (LOCW.EQ.1) NSS=1
  186.       N0=NC+NSW 
  187.       N01=NC+1
  188.       N1=N0+ND
  189.       N11=N1+1
  190.       N2=N1+NWC 
  191.       NT=N2+NWO 
  192.       NT1=NT+1
  193.       NTS=NT1 
  194.       NSP1=NSS+1
  195. C CALCULATE VALUES FOR CUT-OUT AND OBSTRUCTION IDENTIFIERS
  196.       IMAX=NWINDO+6 
  197.       IMAX1=IMAX+1
  198.       ICO(IMAX)=NWINDO
  199.       DO 4170 I=1,IMAX1 
  200.       DO 4160 J=1,IMAX
  201.  4160 IOB(1,I,J)=0
  202.  4170 IOB(1,I,I)=-1 
  203.       DO 4175 I=1,NWINDO
  204.       JCO(IMAX,I)=I 
  205.       IOB(1,I,IMAX)=-1
  206.  4175 IOB(1,IMAX,I)=-1
  207.       IOB(1,IMAX1,NWINDO+5)=-1
  208.       DO 4180 I=1,IMAX1 
  209.       DO 4180 J=1,3 
  210.       IOB(2,I,J)=0
  211.       IOB(2,J,J)=-1 
  212.  4180 KOB(2,I,J)=-1 
  213.       DO 4190 I=1,5 
  214.       DO 4190 J=2,3 
  215.  4190 KOB(2,I+NWINDO,J)=0 
  216.       KOB(2,NWINDO+5,2)=-1
  217.       KOB(2,NWINDO+7,3)=0 
  218.       RO=RO*RAD 
  219.       SRO=SIN(RO) 
  220.       CRO=COS(RO) 
  221. C DESCRIPTION OF WINDOWS
  222.       DO 4200 I=1,NWINDO
  223.       X0(1,I,1)=(WCX(I)-WW(I)/2.)*SRO 
  224.       X0(1,I,2)=-(WCX(I)-WW(I)/2.)*CRO
  225.       X0(1,I,3)=RE+WCY(I)-WH(I)/2.
  226.       X0(1,I,4)=WW(I) 
  227.       X0(1,I,5)=0.
  228.       X0(1,I,6)=WW(I) 
  229.       X0(1,I,7)=WH(I) 
  230.       BETA(1,I,1)=PI/2. 
  231.       BETA(1,I,2)=0.
  232.       PSI(1,I,1)=RO-PI/2. 
  233.       PSI(1,I,2)=0. 
  234.       IF (LOCW.NE.2) GOTO 4200
  235.       X0(1,I,1)=X0(1,I,1) - (WCY(I)-WH(I)/2.)*CRO 
  236.       X0(1,I,2)=-WCX(I)*CRO-(WCY(I)-WH(I)/2.)*SRO+WW(I)*.5*SRO
  237.       X0(1,I,3)=RE+RH 
  238.       BETA(1,I,2)=PI/2. 
  239.       PSI(1,I,2)=RO-PI
  240.  4200 CONTINUE
  241. C FRONT WALL
  242.       I=NWINDO+2*(4-LOCW) 
  243.       X0(1,I,1)=-RW/2.*SRO
  244.       X0(1,I,2)=RW/2.*CRO 
  245.       X0(1,I,3)=RE
  246.       X0(1,I,4)=RW
  247.       X0(1,I,5)=0.
  248.       X0(1,I,6)=RW
  249.       X0(1,I,7)=RH
  250.       BETA(1,I,1)=PI/2. 
  251.       BETA(1,I,2)=0.
  252.       PSI(1,I,1)=RO-PI/2. 
  253.       PSI(1,I,2)=0. 
  254. C LEFT WALL 
  255.       I=NWINDO+1
  256.       X0(1,I,1)=-RD*CRO-RW/2.*SRO 
  257.       X0(1,I,2)=-RD*SRO+RW/2.*CRO 
  258.       X0(1,I,3)=RE
  259.       X0(1,I,4)=RD
  260.       X0(1,I,5)=0.
  261.       X0(1,I,6)=RD
  262.       X0(1,I,7)=RH
  263.       BETA(1,I,1)=PI/2. 
  264.       BETA(1,I,2)=0.
  265.       PSI(1,I,1)=RO 
  266.       PSI(1,I,2)=0. 
  267. C REAR WALL 
  268.       I=NWINDO+2
  269.       X0(1,I,1)=-RD*CRO+RW/2.*SRO 
  270.       X0(1,I,2)=-RD*SRO-RW/2.*CRO 
  271.       X0(1,I,3)=RE
  272.       X0(1,I,4)=RW
  273.       X0(1,I,5)=0.
  274.       X0(1,I,6)=RW
  275.       X0(1,I,7)=RH
  276.       BETA(1,I,1)=PI/2. 
  277.       BETA(1,I,2)=0.
  278.       PSI(1,I,1)=RO+PI/2. 
  279.       PSI(1,I,2)=0. 
  280. C RIGHT SIDE
  281.       I=NWINDO+3
  282.       X0(1,I,1)=RW/2.*SRO 
  283.       X0(1,I,2)=-RW/2.*CRO
  284.       X0(1,I,3)=RE
  285.       X0(1,I,4)=RD
  286.       X0(1,I,5)=0.
  287.       X0(1,I,6)=RD
  288.       X0(1,I,7)=RH
  289.       BETA(1,I,1)=PI/2. 
  290.       BETA(1,I,2)=0.
  291.       PSI(1,I,1)=RO+PI
  292.       PSI(1,I,2)=0. 
  293. C CEILING 
  294.       I=NWINDO+2*(1+LOCW) 
  295.       X0(1,I,1)=RW/2.*SRO-RD*CRO
  296.       X0(1,I,2)=-RW/2.*CRO-RD*SRO 
  297.       X0(1,I,3)=RE+RH 
  298.       X0(1,I,4)=RW
  299.       X0(1,I,5)=0.
  300.       X0(1,I,6)=RW
  301.       X0(1,I,7)=RD
  302.       BETA(1,I,1)=PI/2. 
  303.       BETA(1,I,2)=PI/2. 
  304.       PSI(1,I,1)=RO+PI/2. 
  305.       PSI(1,I,2)=RO 
  306. C FLOOR 
  307.       I=NWINDO+5
  308.       X0(1,I,1)=-RW/2.*SRO-RD*CRO 
  309.       X0(1,I,2)=RW/2.*CRO-RD*SRO
  310.       X0(1,I,3)=RE
  311.       X0(1,I,4)=RW
  312.       X0(1,I,5)=0.
  313.       X0(1,I,6)=RW
  314.       X0(1,I,7)=RD
  315.       BETA(1,I,1)=PI/2. 
  316.       BETA(1,I,2)=PI/2. 
  317.       PSI(1,I,1)=RO-PI/2. 
  318.       PSI(1,I,2)=RO 
  319. C WORKING SURFACE 
  320.       I=NWINDO+7
  321.       X0(1,I,1)=-RW/2.*SRO-RD*CRO 
  322.       X0(1,I,2)=RW/2.*CRO-RD*SRO
  323.       X0(1,I,3)=RE+WSE
  324.       X0(1,I,4)=RW
  325.       X0(1,I,5)=0.
  326.       X0(1,I,6)=RW
  327.       X0(1,I,7)=RD
  328.       BETA(1,I,1)=PI/2. 
  329.       BETA(1,I,2)=PI/2. 
  330.       PSI(1,I,1)=RO-PI/2. 
  331.       PSI(1,I,2)=RO 
  332.       RHO(1,I)=1. 
  333. C OUTSIDE WINDOW WALL 
  334.       X0(2,1,1)=(.5*WS+XS)*SRO
  335.       X0(2,1,2)=-(.5*WS+XS)*CRO 
  336.       X0(2,1,3)=0.
  337.       X0(2,1,4)=WS
  338.       X0(2,1,5)=0.
  339.       X0(2,1,6)=WS
  340.       X0(2,1,7)=HS
  341.       BETA(2,1,1)=PI/2. 
  342.       BETA(2,1,2)=0.
  343.       PSI(2,1,1)=RO+PI/2. 
  344.       PSI(2,1,2)=0. 
  345. C OUTSIDE GROUND
  346.       IF (IOPP.EQ.-1) GOTO 4210 
  347.       HGR=WS
  348.       IF(IOPP.EQ.1) HGR=DO
  349.       X0(2,2,1)=-(0.75*WS-XS)*SRO 
  350.       X0(2,2,2)= (0.75*WS-XS)*CRO 
  351.       X0(2,2,3)=0.
  352.       X0(2,2,4)=1.5*WS
  353.       X0(2,2,5)=0.
  354.       X0(2,2,6)=1.5*WS
  355.       X0(2,2,7)=HGR 
  356.       BETA(2,2,1)=PI/2. 
  357.       BETA(2,2,2)=PI/2. 
  358.       PSI(2,2,1)=RO-PI/2. 
  359.       PSI(2,2,2)=RO 
  360.       IF(IOPP.LE.0) GOTO 4210 
  361. C OPPOSING BUILDING 
  362.       X0(2,3,1)=DO*CRO-(.5*WO-XO)*SRO 
  363.       X0(2,3,2)=DO*SRO+(.5*WO-XO)*CRO 
  364.       X0(2,3,3)=0.
  365.       X0(2,3,4)=WO
  366.       X0(2,3,5)=0.
  367.       X0(2,3,6)=WO
  368.       X0(2,3,7)=HO
  369.       BETA(2,3,1)=PI/2. 
  370.       BETA(2,3,2)=0.
  371.       PSI(2,3,1)=RO-PI/2. 
  372.       PSI(2,3,2)=0. 
  373. C INPUT DATA PRINT-OUT
  374.  4210 RO=RO/RAD 
  375.       WRITE(7,6300) RW,RD,RH,RO 
  376.       IF(LOCW.EQ.1) WRITE(7,6302) NWINDO
  377.       IF(LOCW.EQ.2) WRITE(7,6303) NWINDO
  378.       DO 4220 I=1,NWINDO
  379.       WRITE(7,6310) I,WW(I),WH(I),WCX(I),WCY(I),NM(I),NN(I) 
  380.       IF(ITYPW(I).EQ.1) WRITE(7,6311) ITYPW(I)
  381.       IF(ITYPW(I).NE.2) GOTO 4215 
  382.       IF(ISD(I).EQ.1) WRITE(7,6312) ITYPW(I),ALPHA(I) 
  383.  4215 IF(ITYPW(I).EQ.3) WRITE(7,6313) ITYPW(I)
  384.       WRITE(7,6320) AK2(I),DW(I),TAU(I),RHO(1,I)
  385.       IF(IOH(I).EQ.0) GOTO 4220 
  386.       IF(IOH(I).EQ.1) WRITE(7,6031) OHW(I),RING(I),OHREF(I) 
  387.       IF(IOH(I).EQ.2) WRITE(7,6032) OHW(I),RING(I),OHREF(I) 
  388.       IF(IOH(I).EQ.3) WRITE(7,6033) OHW(I),RING(I),OHREF(I) 
  389.       IF(IOH(I).EQ.4) WRITE(7,6034) OHW(I),RING(I),OHREF(I) 
  390.       IF(IOH(I).EQ.5) WRITE(7,6035) OHW(I),RING(I),OHREF(I) 
  391.       IF(KOH(I).EQ.0) WRITE(7,6036) 
  392.       IF(KOH(I).EQ.1) WRITE(7,6037) OHTAU(I)
  393.       IF(KOH(I).EQ.2) WRITE(7,6038) OHTAU(I)
  394.  4220 CONTINUE
  395.       NWP6=NWINDO+2*(4-LOCW)
  396.       NWP4=NWINDO+2*(1+LOCW)
  397.       WRITE(7,6331) NM(NWP6),NN(NWP6),RHO(1,NWP6) 
  398.       WRITE(7,6332) NM(NWINDO+1),NN(NWINDO+1),RHO(1,NWINDO+1) 
  399.       WRITE(7,6333) NM(NWINDO+2),NN(NWINDO+2),RHO(1,NWINDO+2) 
  400.       WRITE(7,6334) NM(NWINDO+3),NN(NWINDO+3),RHO(1,NWINDO+3) 
  401.       WRITE(7,6335) NM(NWP4),NN(NWP4),RHO(1,NWP4) 
  402.       WRITE(7,6336) NM(NWINDO+5),NN(NWINDO+5),RHO(1,NWINDO+5) 
  403.       WRITE(7,6337) NM(NWINDO+7),NN(NWINDO+7),WSE 
  404.       WRITE(7,6340) WS,HS,XS,RHO(2,1) 
  405.       IF(IOPP.EQ.1) WRITE(7,6350) WO,HO,XO,DO,RHO(2,3)
  406.       GOTO 39 
  407. C ***  COMPREHENSIVE INPUT FOR GENERAL ROOM;
  408. C ***  NON-RECTANGULAR ROOMS, NON-RECTANGULAR SURFACES, OBSTRUCTIONS, ETC.
  409. C DATA FOR ROOM 
  410.    31 WRITE(7,6005) 
  411. C NUMBER OF DIFFERENT TYPES OF SURFACES 
  412.       READ(5,*) NC,NSW,ND,NWC,NWO,NWS,NSS 
  413.       WRITE(7,6000)NC,NSW,ND,NWC,NWO,NWS,NSS
  414.       N0=NC+NSW 
  415.       N01=NC+1
  416.       N1=N0+ND
  417.       N11=N1+1
  418.       N2=N1+NWC 
  419.       NT=N2+NWO 
  420.       NT1=NT+1
  421.       NTS=NT+NWS
  422.       NSP1=NSS+1
  423.       IF (NWS.LE.3) GOTO 5170 
  424.       WRITE(7,8007) 
  425.       STOP
  426. 5170  IF (NSS.LE.2) GOTO 5180 
  427.       WRITE(7,8008) 
  428.       STOP
  429. 5180  IF (N1*2+NWC+NWO+NWS.LE.30) GOTO 5200 
  430.       WRITE(7,8010) 
  431.       STOP
  432. 5200  DO 10 I=1,NT
  433. C INTERNAL SURFACE DATA 
  434.       READ(5,*)   (X0(1,I,IZ),IZ=1,7),(BETA(1,I,IZ),PSI(1,I,IZ),IZ=1, 
  435.      1            2),RHO(1,I),NM(I),NN(I) 
  436.       WRITE(7,6010)I,(X0(1,I,IZ),IZ=1,7),(BETA(1,I,IZ),PSI(1,I,IZ),IZ=1,
  437.      1            2),RHO(1,I) 
  438.       WRITE(7,6020)NM(I),NN(I)
  439.       IF (NM(I)*NN(I).LE.400) GOTO 5205 
  440.       WRITE(7,8011) I 
  441.       STOP
  442. 5205  IF (RHO(1,I).GE.0..AND.RHO(1,I).LE.1.) GOTO 5210
  443.       WRITE(7,8012) I 
  444.       STOP
  445. 5210  DO 11 IZ=1,2
  446.       BETA(1,I,IZ)=RAD*BETA(1,I,IZ) 
  447.    11 PSI(1,I,IZ)=RAD*PSI(1,I,IZ) 
  448. C NUMBER AND NAMES OF CUT-OUTS
  449.       IF(I.LE.N2) GO TO 13
  450.       READ(5,*) ICO(I),(JCO(I,M),M=1,ICO(I))
  451.       IF (ICO(I).LT.1) GOTO 13
  452.       DO 5020 M=1,ICO(I)
  453.       IF (JCO(I,M).GE.1.AND.JCO(I,M).LE.NTS) GOTO 5020
  454.       WRITE(7,8014) I 
  455.       STOP
  456. 5020  CONTINUE
  457. C NUMBER AND NAMES OF OBSTRUCTORS 
  458.  13   READ(5,*) (IOB(1,I,J),(JOB(I,J,K),K=1,IOB(1,I,J)),J=1,NT)
  459.       IDS(I)=1
  460.       IF(I.GT.N1) GO TO 10
  461. C WINDOW DATA 
  462.       READ(5,*) IS,AK2(I),TAU(I),DW(I),IOH(I) 
  463.       IF (IS.LE.NSS) GOTO 5220
  464.       WRITE(7,8020) I 
  465.       STOP
  466. 5220  IF (TAU(I).GE.0..AND.TAU(I).LE.1.) GOTO 5230
  467.       WRITE(7,8022) I 
  468.       STOP
  469.  5230 IF (AK2(I).GE.0..AND.AK2(I).LE.1.) GOTO 5240
  470.       WRITE(7,8024) I 
  471.       STOP
  472. 5240  IF(IOH(I).EQ.0) GOTO 16 
  473. C OVERHANG DATA 
  474.       READ(5,*) OHW(I),RING(I),OHREF(I),KOH(I),OHTAU(I) 
  475.       IF (KOH(I).EQ.0) OHTAU(I)=0.
  476.       IF (OHREF(I).GE.0..AND.OHREF(I).LE.1.) GOTO 5250
  477.       WRITE(7,8034) I 
  478.       STOP
  479. 5250  IF (OHTAU(I).GE.0..AND.OHTAU(I).LE.1.) GOTO 16
  480.       WRITE(7,8036) I 
  481.       STOP
  482.    16 IDS(I)=IS+1-1/(1+IS)
  483.       ALPHA(I)=1. 
  484.       IF(I.GT.N0)ALPHA(I)=0.
  485.       ISD(I)=1
  486.       WRITE(7,6030)IS,AK2(I),TAU(I),DW(I) 
  487.       IF(I.LE.NC.OR.I.GT.N0) GO TO 18 
  488. C SHEER CURTAIN 
  489.       READ(5,*) ALPHA(I)
  490.       WRITE(7,6064) ALPHA(I)
  491.    18 IF(IOH(I).EQ.0) GOTO 10 
  492.       IF(IOH(I).EQ.1) WRITE(7,6031) OHW(I),RING(I),OHREF(I) 
  493.       IF(IOH(I).EQ.2) WRITE(7,6032) OHW(I),RING(I),OHREF(I) 
  494.       IF(IOH(I).EQ.3) WRITE(7,6033) OHW(I),RING(I),OHREF(I) 
  495.       IF(IOH(I).EQ.4) WRITE(7,6034) OHW(I),RING(I),OHREF(I) 
  496.       IF(IOH(I).EQ.5) WRITE(7,6035) OHW(I),RING(I),OHREF(I) 
  497.       IF(KOH(I).EQ.0) WRITE(7,6036) 
  498.       IF(KOH(I).EQ.1) WRITE(7,6037) OHTAU(I)
  499.       IF(KOH(I).EQ.2) WRITE(7,6038) OHTAU(I)
  500.    10 CONTINUE
  501. C DATA FOR WORKING SURFACES 
  502.       DO 35 I=NT1,NTS 
  503.       READ(5,*) (X0(1,I,IZ),IZ=1,7),(BETA(1,I,IZ),PSI(1,I,IZ),IZ
  504.      1             =1,2),NM(I),NN(I)
  505.       WRITE(7,6070)I,(X0(1,I,IZ),IZ=1,7),(BETA(1,I,IZ),PSI(1,I,IZ),IZ=1 
  506.      1             ,2),NM(I),NN(I)
  507.       IF (NM(I)*NN(I).LE.400) GOTO 5270 
  508.       WRITE(7,8011) I 
  509.       STOP
  510. 5270  RHO(1,I)=1. 
  511.       DO 36 IZ=1,2
  512.       BETA(1,I,IZ)=RAD*BETA(1,I,IZ) 
  513.    36 PSI(1,I,IZ)=RAD*PSI(1,I,IZ) 
  514.       READ(5,*) (IOB(1,I,J),(JOB(I,J,K),K=1,IOB(1,I,J)),J=1,NT)
  515.    35 CONTINUE
  516. C DATA FOR OUTSIDE ENCLOSURES 
  517.       NW(1)=0 
  518.       IF(NSS.EQ.0)GO TO 39
  519. C SCAN OVER ALL OUTSIDE ENCLOSURES
  520.       DO 20 K=2,NSP1
  521. C NUMBER OF SOLID WALLS IN OUTSIDE ENCLOSURE
  522.       READ(5,*) NW(K) 
  523.       K2=K-1
  524.       WRITE(7,6040)K2,NW(K) 
  525.       NTK=NW(K) 
  526.       DO 20 I=1,NTK 
  527. C SURFACE DATA
  528.       READ (5,*)  (X0(K,I,IZ),IZ=1,7),(BETA(K,I,IZ),PSI(K,I,IZ),IZ=1, 
  529.      1             2),RHO(K,I)
  530.       WRITE(7,6010)I,(X0(K,I,IZ),IZ=1,7),(BETA(K,I,IZ),PSI(K,I,IZ),IZ=1,
  531.      1             2),RHO(K,I)
  532.       IF (RHO(K,I).GE.0..AND.RHO(K,I).LE.1.) GOTO 5290
  533.       WRITE(7,8005) I,K 
  534.       STOP
  535. 5290  DO 17 IZ=1,2
  536.       BETA(K,I,IZ)=RAD*BETA(K,I,IZ) 
  537.    17 PSI(K,I,IZ)=RAD*PSI(K,I,IZ) 
  538. C NUMBER OF OBSTRUCTORS 
  539.  20   READ(5,*) (IOB(K,I,J),(KJOB(K,I,J),L=1,IOB(K,I,J)),J=1,NTK)
  540. C NUMBER OF OBSTRUCTORS BETWEEN INSIDE AND OUTSIDE SURFACES 
  541.       DO 30 K=2,NSP1
  542.       NTK=NW(K) 
  543.       DO 30 I=1,NTS 
  544.  30   READ(5,*) (KOB(K,I,J),(KKOB(K,I,L),L=1,KOB(K,I,J)),J=1,NTK)
  545.    39 WSOR=PSI(1,NT1,1) 
  546.       NW(1)=0 
  547. C ILLUMINATION DATA 
  548.       MFIRST=1
  549.       MLAST=1 
  550.       MSTEP=1 
  551.       NTSTEP=1
  552.       IDAY=1
  553.       GOTO(5400,34,5405)IWMOD 
  554. C SPECIFIC SOLAR DATA ARE SUPPLIED
  555. 5400  READ(5,*) SOLC1,ETSOL,SKYC1,ETSKY,ICLD,RHOGR
  556.       WRITE(7,6050)SOLC1,ETSOL,SKYC1,ETSKY,ICLD,RHOGR 
  557.       SKYC=ETSKY*SKYC1
  558.       IF(ICLD.EQ.1.OR.ICLD.EQ.3) GO TO 32 
  559. C CLEAR DAY 
  560.       READ(5,*) HSUND,PSID
  561.       GOTO 5410 
  562. C GEOGRAPHICAL DATA ARE SUPPLIED; SCANS THROUGH MONTHS, HOURS 
  563.    34 READ(5,*) ALAT,ALONG,TZN,ALT,ICLD,RHOGR 
  564.       READ(5,*) MFIRST,MLAST,MSTEP,IDAY,TFIRST,TLAST,DELTAT 
  565.       WRITE(7,6100) ALAT,ALONG,TZN,ALT,ICLD,RHOGR 
  566.       WRITE(7,6110) MFIRST,MLAST,MSTEP,IDAY,TFIRST,TLAST,DELTAT 
  567.       IF(ICLD.EQ.1.OR.ICLD.EQ.3) GOTO 42
  568.       READ(5,*) (W(M),BW(M),M=MFIRST,MLAST,MSTEP) 
  569.       WRITE(7,6120) 
  570.       DO 6125 M=MFIRST,MLAST,MSTEP
  571.       IF (W(M).GE.0..AND.W(M).LE.10.) GOTO 6124 
  572.       WRITE(7,8030) M 
  573.       STOP
  574. 6124  IF (BW(M).GE.0..AND.BW(M).LE..5) GOTO 6125
  575.       WRITE(7,8032) M 
  576.       STOP
  577.  6125 WRITE(7,6121) M,W(M),BW(M)
  578.    42 NTSTEP=(TLAST-TFIRST)/DELTAT+1.1
  579.       GOTO 32 
  580. C SUN POSITION( ALTITUDE AND AZIMUTH) DATA ARE SUPPLIED 
  581. 5405  READ(5,*) HSUND,PSID,ALT,ICLD,RHOGR 
  582.       WRITE(7,6105) HSUND,PSID,ALT,ICLD,RHOGR 
  583.       IF(ICLD.EQ.1.OR.ICLD.EQ.3) GOTO 5410
  584.       READ(5,*) W(1),BW(1)
  585. 5410  HSUN=HSUND*RAD
  586.       PSIS=PSID*RAD 
  587.       IISUN=1 
  588. 32    IF(INID.EQ.1.AND.IOPP.NE.-1)RHO(2,2)=RHOGR
  589.       IF (RHOGR.GE.0..AND.RHOGR.LE.1.) GOTO 5300
  590.       WRITE (6,8026)
  591.       STOP
  592. C EVALUATION OF DIRECTION COSINES 
  593.  5300 DO 40 K=1,NSP1
  594.       NTK=NTS 
  595.       IF(K.GE.2) NTK=NW(K)
  596.       DO 40 I=1,NTK 
  597.       SBX=SIN(BETA(K,I,1))
  598.       CBX=COS(BETA(K,I,1))
  599.       SBY=SIN(BETA(K,I,2))
  600.       CBY=COS(BETA(K,I,2))
  601.       SPX=SIN(PSI(K,I,1)) 
  602.       CPX=COS(PSI(K,I,1)) 
  603.       SPY=SIN(PSI(K,I,2)) 
  604.       CPY=COS(PSI(K,I,2)) 
  605.       LL(K,I,1)=SBX*CPX 
  606.       LL(K,I,2)=SBX*SPX 
  607.       LL(K,I,3)=CBX 
  608.       LL(K,I,4)=SBY*CPY 
  609.       LL(K,I,5)=SBY*SPY 
  610.       LL(K,I,6)=CBY 
  611.       LL(K,I,7)=SBX*SPX*CBY-CBX*SBY*SPY 
  612.       LL(K,I,8)=CBX*SBY*CPY-SBX*CPX*CBY 
  613.       LL(K,I,9)=SBX*SBY*(SPY*CPX-CPY*SPX) 
  614.    40 CONTINUE
  615. C CALCULATION OF NODAL COORDINATES
  616.       DO 1100 I=1,NTS 
  617.       K=0 
  618.       NM1=NM(I) 
  619.       NN1=NN(I) 
  620.       AA=X0(1,I,7)/(NM1*NN1)
  621.       BB=X0(1,I,4)-X0(1,I,6)+X0(1,I,5)
  622.       DO 1000 N=1,NN1 
  623.       ETA=(NN1+.5-N)/NN1
  624.       CC=X0(1,I,4)-BB*ETA 
  625.       DO 1000 M=1,NM1 
  626.       XSI=(M-.5)/NM1
  627.       XIP=X0(1,I,5)*ETA+CC*XSI
  628.       YIP=X0(1,I,7)*ETA 
  629.       DO 1010 L=1,3 
  630.  1010 XN(I,K+1,L)=X0(1,I,L)+LL(1,I,L)*XIP+LL(1,I,L+3)*YIP 
  631. C CHECK WHETHER A NODAL POINT FALLS ONTO A CUT-OUT
  632.       IF(I.LE.N2.OR.I.GT.NT) GOTO 1020
  633.       IICO=ICO(I) 
  634.       DO 1030 IC=1,IICO 
  635.       J=JCO(I,IC) 
  636.       XJP=0.
  637.       YJP=0.
  638.       DO 1040 L=1,3 
  639.       XYP=XN(I,K+1,L)-X0(1,J,L) 
  640.       XJP=XJP+XYP*LL(1,J,L) 
  641.  1040 YJP=YJP+XYP*LL(1,J,L+3) 
  642.       ETAJ=YJP/X0(1,J,7)
  643.       IF(ABS(ETAJ-.5).GT..5) GOTO 1030
  644.       XSIJ=(XJP-X0(1,J,5)*ETAJ)/(X0(1,J,4)-(X0(1,J,4)-X0(1,J,6)+
  645.      1          X0(1,J,5))*ETAJ)
  646.       IF(ABS(XSIJ-.5).GT..5) GOTO 1030
  647.       GOTO 1000 
  648.  1030 CONTINUE
  649.  1020 K=K+1 
  650.       AIK(I,K)=AA*CC
  651.  1000 CONTINUE
  652. C NUMBER OF NODES ON SURFACE
  653.  1100 NUM(I)=K
  654. C CALCULATION OF COORDINATES FOR OUTSIDE SURFACE OF WINDOW OPENING
  655. C (STORE THESE AUXILIARY SURFACES BEYOND WORKING SURFACE, I.E.@ NTS+I)
  656.       DO 45 I=1,N1
  657.       DO 43 J=1,3 
  658.       X0(1,I+NTS,J)=X0(1,I,J)-(DW(I)+1.E-3)*LL(1,I,J+6) 
  659.       DO 43 K=1,3 
  660.       JJ=J+3*(K-1)
  661.    43 LL(1,I+NTS,JJ)=LL(1,I,JJ) 
  662.       DO 45 J=4,7 
  663.    45 X0(1,I+NTS,J)=X0(1,I,J) 
  664. C CALCULATION OF OUTSIDE SURFACE AREAS
  665.       IF(NSS.EQ.0) GOTO 49
  666.       DO 44 K=2,NSP1
  667.       NTK=NW(K) 
  668.       DO 44 I=1,NTK 
  669.       LUM(K,I)=0
  670.    44 A(K,I)=(X0(K,I,4)+X0(K,I,6)-X0(K,I,5))*X0(K,I,7)/2. 
  671. C GEOMETRIC DESCRIPTION OF WINDOW OVERHANGS 
  672. C (STORED BEYOND OUTSIDE ENCLOSURES, I.E. 1+NSS+1)
  673.    49 NOH=NSP1+1
  674.       IOHK=0
  675.       DO 490 I=1,N1 
  676.       IF(IOH(I).EQ.0) GOTO 490
  677.       IN=I+NTS
  678.       IOHK=IOHK+1 
  679.       ISTART(I)=IOHK
  680.       X2Y=X0(1,IN,5)/X0(1,IN,7) 
  681.       RTX2Y=SQRT(1.+X2Y*X2Y)
  682.       X31Y=(X0(1,IN,4)-X0(1,IN,6))/X0(1,IN,7) 
  683.       RTX31Y=SQRT(1.+X31Y*X31Y) 
  684.       XLT=X0(1,IN,5)-RING(I)*(RTX2Y-X2Y)
  685.       YLT=X0(1,IN,7)+RING(I)
  686.       XTR=X0(1,IN,6)+RING(I)*(RTX31Y-X31Y)
  687.       YTR=YLT 
  688.       IF(IOH(I).EQ.2.OR.IOH(I).EQ.3) GOTO 425 
  689. C TOP OVERHANG
  690.       DO 410 L=1,3
  691.   410 X0(NOH,IOHK,L)=X0(1,IN,L)+LL(1,I,L)*XLT+LL(1,I,L+3)*YLT 
  692.       X0(NOH,IOHK,4)=OHW(I) 
  693.       X0(NOH,IOHK,5)=0. 
  694.       X0(NOH,IOHK,6)=OHW(I) 
  695.       X0(NOH,IOHK,7)=XTR-XLT
  696.       DO 420 L=1,3
  697.       LL(NOH,IOHK,L)=-LL(1,I,L+6) 
  698.       LL(NOH,IOHK,L+3)=LL(1,I,L)
  699.   420 LL(NOH,IOHK,L+6)=-LL(1,I,L+3) 
  700.       RHO(NOH,IOHK)=OHREF(I)
  701.       IF(IOH(I).LE.1) GOTO 490
  702.       IOHK=IOHK+1 
  703.   425 XBL=-RING(I)*(RTX2Y+X2Y)
  704.       YBL=-RING(I)
  705.       XRB=X0(1,IN,4)+RING(I)*(RTX31Y+X31Y)
  706.       YRB=YBL 
  707.       IF(IOH(I).EQ.3) GOTO 455
  708. C LEFT AND RIGHT OVERHANGS
  709.       DO 430  L=1,3 
  710.       X0(NOH,IOHK,L)=X0(1,IN,L)+LL(1,I,L)*XBL+LL(1,I,L+3)*YBL 
  711.   430 X0(NOH,IOHK+1,L)=X0(1,IN,L)+LL(1,I,L)*XTR+LL(1,I,L+3)*YTR 
  712.       X0(NOH,IOHK,4)=OHW(I) 
  713.       X0(NOH,IOHK,5)=0. 
  714.       X0(NOH,IOHK,6)=OHW(I) 
  715.       X0(NOH,IOHK,7)=(X0(1,IN,7)+2.*RING(I))*RTX2Y
  716.       X0(NOH,IOHK+1,4)=OHW(I) 
  717.       X0(NOH,IOHK+1,5)=0. 
  718.       X0(NOH,IOHK+1,6)=OHW(I) 
  719.       X0(NOH,IOHK+1,7)=(X0(1,IN,7)+2.*RING(I))*RTX31Y 
  720.       DO 440 L=1,3
  721.       LL(NOH,IOHK,L)=-LL(1,I,L+6) 
  722.       LL(NOH,IOHK,L+3)=(LL(1,I,L)*X2Y+LL(1,I,L+3))/RTX2Y
  723.       LL(NOH,IOHK+1,L)=-LL(1,I,L+6) 
  724.   440 LL(NOH,IOHK+1,L+3)=(LL(1,I,L)*X31Y-LL(1,I,L+3))/RTX31Y
  725.       DO 450 L=1,3
  726.       L1=L+1-3*(L/3)
  727.       L2=L+2-3*(L/2)
  728.       LL(NOH,IOHK,L+6)=LL(NOH,IOHK,L1)*LL(NOH,IOHK,L2+3)
  729.      1                -LL(NOH,IOHK,L2)*LL(NOH,IOHK,L1+3)
  730.   450 LL(NOH,IOHK+1,L+6)=LL(NOH,IOHK+1,L1)*LL(NOH,IOHK+1,L2+3)
  731.      1                  -LL(NOH,IOHK+1,L2)*LL(NOH,IOHK+1,L1+3)
  732.       RHO(NOH,IOHK)=OHREF(I)
  733.       IOHK=IOHK+1 
  734.       RHO(NOH,IOHK)=OHREF(I)
  735.       IF(IOH(I).EQ.2.OR.IOH(I).EQ.4) GOTO 490 
  736. C BOTTOM OVERHANG 
  737.       IOHK=IOHK+1 
  738.   455 DO 460 L=1,3
  739.   460 X0(NOH,IOHK,L)=X0(1,IN,L)+LL(1,I,L)*XRB+LL(1,I,L+3)*YRB 
  740.       X0(NOH,IOHK,4)=OHW(I) 
  741.       X0(NOH,IOHK,5)=0. 
  742.       X0(NOH,IOHK,6)=OHW(I) 
  743.       X0(NOH,IOHK,7)=XRB-XBL
  744.       DO 470 L=1,3
  745.       LL(NOH,IOHK,L)=-LL(1,I,L+6) 
  746.       LL(NOH,IOHK,L+3)=-LL(1,I,L) 
  747.   470 LL(NOH,IOHK,L+6)=LL(1,I,L+3)
  748.       RHO(NOH,IOHK)=OHREF(I)
  749.   490 CONTINUE
  750.       ISTART(N1+1)=IOHK+1 
  751.       ZENL0=0 
  752. C START CYCLE FOR MONTHS AND HOURS (IF IWMOD=2) 
  753.       DO 3400 MONTH=MFIRST,MLAST,MSTEP
  754.       DO 3400 ITIME=1,NTSTEP
  755.       IF(IWMOD.NE.2) GOTO 494 
  756.       TIME=TFIRST + DELTAT*(ITIME-1)
  757.       WRITE(7,6130) MONTH,TIME
  758. C ZENITH LUMINANCE
  759. 494   DO 495 K=2,NSP1 
  760.       NK=NW(K)
  761.       DO 495 I=1,NK 
  762. 495   DSOL(K,I)=0.
  763.       DO 496 I=1,NWS
  764.       KMAX=NUM(I+NT)
  765.       DO 496 K=1,KMAX 
  766. 496   WSOL(I,K)=0.
  767.       DO 497 I=1,NTS
  768.       KMAX=NUM(I) 
  769.       DO 497 K=1,KMAX 
  770. 497   LUMI(I,K)=0.
  771.       GO TO(50,60,50,60),ICLD 
  772. C ICLD=1.. OVERCAST SKY, SKY LUMINANCE DISTRIBUTION FROM C.I.E. 
  773. C ICLD=2.. CLEAR SKY WITH DIRECT SUN INCLUDED.
  774. C ICLD=3.. UNIFORM-LUMIN@ANCE SKY, ZENITH VALUE FROM OVERCAST C.I.E.
  775. C ICLD=4.. CLEAR SKY ONLY 
  776.    50 AK=5.*(3.-2.*RHOGR)/7.*(1/ICLD) 
  777.       AUX(1)=1./(1.+AK) 
  778.       AUX(2)=AUX(1)*AK
  779.       SOLC=0. 
  780.       GOTO(57,58,59)IWMOD 
  781. C LUMINANCE FROM INSOLATION DATA
  782. 57    ZENL=(1.+AK)*SKYC/((1.+.667*AK))
  783.       GRNDL=SKYC*RHOGR/ZENL 
  784.       GO TO 100 
  785. C LUMINANCE FROM GEOGRAPHICAL DATA
  786. C DETERMINE HSUN=SUN ALTITUDE ANGLE 
  787. 58    CALL SOLAR(ALAT,ALONG,TZN,MONTH,TIME,IISUN,HSUN,PSIS) 
  788. 59    ZENL=92.94*(.123+8.6*SIN(HSUN))*PI 
  789.       SKYC=(1.+.667*AK)/(1.+AK)*ZENL
  790.       GRNDL=SKYC*RHOGR/ZENL 
  791.       IF(MONTH-MFIRST+ITIME.EQ.1) GOTO 100
  792. C SET UP LUMINANCES FOR OTHER TIMES IF NOT CLEAR SKY
  793. C   (FOR NON-CLEAR SKY CALCUL@ATIONS NEED TO BE DONE ONLY ONCE, AS
  794. C   GEOMETRY AND SKY DISTRIBUTION REMAIN UNCHANGED; ONLY THE VALUE
  795. C   OF ZENL=ZENITH LUMINANCE CHANGES) 
  796. C RATIO OF NEW AND OLD ZENITH LUMINANCES
  797.       ZR=ZENL/ZENL0 
  798.       ZENL0=ZENL
  799. C OUTSIDE LUMINANCES
  800.       IF (NSS.LE.0) GOTO 2405 
  801.       DO 2400 K=1,NSS 
  802.       NKT=NW(K+1) 
  803.       DO 2400 I=1,NKT 
  804.  2400 LUM(K+1,I)=ZR*LUM(K+1,I)
  805. 2405  IF(IOHK.EQ.0) GOTO 2415 
  806. C OVERHANG LUMINANCES 
  807.       DO 2410 II=1,IOHK 
  808.  2410 LUM(NOH,II)=ZR*LUM(NOH,II)
  809. C INSIDE AND WORKING SURFACES 
  810.  2415 DO 2420 I=1,NTS 
  811.       KMAX=NUM(I) 
  812.       DO 2420 K=1,KMAX
  813.  2420 LUMF(I,K)=ZR*LUMF(I,K)
  814.       GOTO 1405 
  815. C ESTABLISH SUN POSITION FOR THE GEOGRAPHICAL DATA GIVEN
  816.    60 IF(IWMOD.EQ.2)CALL SOLAR(ALAT,ALONG,TZN,MONTH,TIME, 
  817.      1                IISUN,HSUN,PSIS)
  818.       BETAS=PI/2.-HSUN
  819.       HSUND=HSUN/RAD
  820.       PSID=PSIS/RAD 
  821.       IF(IWMOD.EQ.2)WRITE(7,6140) HSUND,PSID
  822. C INTEGRATE NORMALIZED LUMINANCE OVER SKY 
  823.       P=SKYSUM(BETAS) 
  824.       AUX(3)=.27385*(.91+10*EXP(-3*BETAS)+.45*COS(BETAS)**2)
  825.       IF (IWMOD.GT.1) GOTO 67 
  826. C IF SOLAR DATA KNOWN CALCULATE ZENL FROM SKY INTEGRAL
  827.       SOLC=ETSOL*SOLC1
  828.       ES=SOLC/COS(BETAS)
  829.       ZENL=SKYC/P 
  830.       TERM=SOLC/(SOLC+SKYC) 
  831. C IF TOO LITTLE DIFFUSE LIGHT, FAULTY INPUT DATA HAVE BEEN GIVEN
  832.       IF(TERM.LT..9) GOTO 33
  833.       WRITE(7,8000) 
  834.       STOP
  835. C ROUTINE TO CALCULATE ZENL AS FUNCTION OF TURBIDITY, VAPOR & SOL.ALT.
  836.    67 CALL ZENLCD(P,W(MONTH),BW(MONTH),HSUN,ZENL) 
  837. C ROUTINE TO CALCULATE DIRECT SUN FROM SIMILAR DATA 
  838.       IF(ICLD.EQ.2)SOLC=DIR(MONTH,IDAY,BW(MONTH),W(MONTH),ALT,HSUN) 
  839.       IF(ICLD.EQ.4)SOLC=0.
  840. C USE SKY INTEGRAL AND ZENL TO GET DIFFUSE SKY ILLUMINATION 
  841.       SKYC=P*ZENL 
  842.    33 II=0
  843.       ES=SOLC/COS(BETAS)
  844.       GRNDL=(SKYC+SOLC)*RHOGR/ZENL
  845.       IF(NSS.LE.0) GOTO 70
  846. C INITIALIZATION OF SUNNY-NODES IDENTIFIERS FOR OUTSIDE SURFACES
  847.       DO 38 K=2,NSP1
  848.       NK=NW(K)
  849.       DO 38 J=1,NK
  850.       II=II+1 
  851.       KSUN(K,J)=0 
  852.       DSOL(K,J)=0.
  853.       DO 37 M=1,11
  854.       DO 37 N=1,11
  855.       KD(II,M,N)=0. 
  856.    37 CONTINUE
  857.    38 CONTINUE
  858. C DIRECTION COSINES FOR VECTOR TOWARDS SUN
  859. 70    LS(1)=SIN(BETAS)*COS(PSIS)
  860.       LS(2)=SIN(BETAS)*SIN(PSIS)
  861.       LS(3)=COS(BETAS)
  862. C CALCULATION OF DIRECT SUNSHINE ILLUMINATION INSIDE ROOM 
  863.       WRITE(7,6067) 
  864.       DO 1270 IW=1,N1 
  865.       ISUN(IW)=0
  866.       CBW=LS(1)*LL(1,IW,7)+LS(2)*LL(1,IW,8)+LS(3)*LL(1,IW,9)
  867. C DOES SUN HIT WINDOW?
  868.       IF(CBW.GE.-1.E-4) GOTO 1270 
  869. C ANY OBSTRUCTION BETWEEN WINDOW AND SUN? 
  870.       KK=IDS(IW)
  871.       IF(KK.LE.0) GOTO 1240 
  872.       NWK=NW(KK)
  873.       DO 1250 L=1,3 
  874.  1250 X(L)=X0(1,IW,L) 
  875.       DO 1230 J=1,NWK 
  876.       IF(IOB(KK,1,J).LT.0) GOTO 1230
  877.       CALL SECT(X,LS,KK,J,KUT)
  878.       IF(KUT.EQ.1) GOTO 1270
  879.  1230 CONTINUE
  880.  1240 ISUN(IW)=1
  881.       WRITE(7,6068) IW,ALPHA(IW)
  882.  1270 CONTINUE
  883.       IF(N0.EQ.0) GOTO 1300 
  884.       DO 1200 I=1,NTS 
  885. C COULD SUN POSSIBLY SHINE ON THIS SURFACE? 
  886.       CBS=LS(1)*LL(1,I,7)+LS(2)*LL(1,I,8)+LS(3)*LL(1,I,9) 
  887.       IF(CBS.LE.1.E-4) GOTO 1200
  888.       KMAX=NUM(I) 
  889.       DO 1210 IW=1,N0 
  890.       IF(ISUN(IW).EQ.0) GOTO 1210 
  891.       IF(IOB(1,I,IW).LT.0) GOTO 1210
  892.       CBW=LS(1)*LL(1,IW,7)+LS(2)*LL(1,IW,8)+LS(3)*LL(1,IW,9)
  893. C ATTENUATED AMOUNT OF DIRECT SUN LIGHT TO BE ADDED TO LUMINANCE
  894.       WS=RHO(1,I)*ES*CBS*ALPHA(IW)*TAUB(IW,-CBW)
  895.       DO 1260 K=1,KMAX
  896.       DO 1220 L=1,3 
  897.  1220 X(L)=XN(I,K,L)
  898.       CALL SECT(X,LS,1,IW,KUT)
  899. C DOES RAY FROM NODE TO SUN PASS THROUGH WINDOW?
  900.       IF(KUT.NE.1) GOTO 1260
  901. C BACK SIDE OF WINDOW ALSO? 
  902.       CALL SECT(X,LS,1,IW+NTS,KUT)
  903.       IF(KUT.NE.1) GOTO 1260
  904. C HOW ABOUT INTERNAL OBSTRUCTIONS?
  905.       IF(IOB(1,I,IW).EQ.0) GOTO 1255
  906.       IIOB=IOB(1,I,IW)
  907.       DO 1245 IO=1,IIOB 
  908.       JO=JOB(I,IW,IO) 
  909.       CALL SECT(X,LS,1,JO,KUT)
  910.       IF(KUT.EQ.1) GOTO 1260
  911.  1245 CONTINUE
  912. C ANY OVERHANG IN THE WAY?
  913.  1255 IF(IOH(IW).EQ.0) GOTO 1257
  914.       II1=ISTART(IW)
  915.       II2=ISTART(IW+1)-1
  916.       DO 1256 II=II1,II2
  917.       CALL SECT(X,LS,NOH,II,KUT)
  918.       IF(KUT.NE.1) GOTO 1256
  919. C IF SO, IS OVERHANG SEMI-TRANSPARENT? (IN THAT CASE ATTENUATE MORE)
  920.       IF(KOH(IW).NE.1) GOTO 1260
  921.       WS=WS*OHTAU(IW) 
  922.       GOTO 1257 
  923.  1256 CONTINUE
  924. C ANY EXTERNAL OBSTRUCTION IN THE WAY?
  925. 1257  KK=IDS(IW)
  926.       IF (KK.LE.0) GOTO 1275
  927.       NWK=NW(KK)
  928.       DO 1258 J=1,NWK 
  929.       IF (KOB(KK,I,J).LT.0) GOTO 1258 
  930.       CALL SECT(X,LS,KK,J,KUT)
  931.       IF (KUT.EQ.1) GOTO 1260 
  932.  1258 CONTINUE
  933. C DIRECT SUN IS INITIAL VALUE OF LUMINANCE
  934.  1275 LUMI(I,K)=WS
  935.  1260 CONTINUE
  936.  1210 CONTINUE
  937.  1200 CONTINUE
  938. C STORE THESE VALUES ALSO IN WSOL FOR PLOTTING ROUTINE
  939.       DO 1280 I=NT1,NTS 
  940.       KMAX=NUM(I) 
  941.       DO 1280 K=1,KMAX
  942. 1280  WSOL(I-NT,K)=LUMI(I,K)
  943. C CALCULATION OF DIRECT SUNSHINE ON CURTAINED AND 
  944. C DIFFUSE WINDOWS 
  945.       IF(N1.EQ.NC) GOTO 1350
  946.  1300 DO 1310 I=N01,N1
  947. C DOES WINDOW GET SUNSHINE? 
  948.       IF(ISUN(I).EQ.0) GOTO 1310
  949.       CBW=LS(1)*LL(1,I,7)+LS(2)*LL(1,I,8)+LS(3)*LL(1,I,9) 
  950. C CALCULATE ATTENUATED CONTRIBUTION TO LUMINANCE (NOTE CBW<0) 
  951.       WS=-ES*CBW*(1.-ALPHA(I))*TAUB(I,-CBW) 
  952.       KMAX=NUM(I) 
  953. C ANY OVERHANG IN THE WAY FOR THIS NODE?
  954.       DO 1320 K=1,KMAX
  955.       TT=1. 
  956.       IF(IOH(I).EQ.0) GOTO 1320 
  957.       DO 1330 L=1,3 
  958.  1330 X(L)=XN(I,K,L)
  959.       II1=ISTART(I) 
  960.       II2=ISTART(I+1)-1 
  961.       DO 1340 II=II1,II2
  962.       CALL SECT(X,LS,NOH,II,KUT)
  963.       IF(KUT.NE.1) GOTO 1340
  964.       TT=0. 
  965. C IS OVERHANG SEMI-TRANSPARENT? 
  966.       IF(KOH(I).EQ.1) TT=OHTAU(I) 
  967.       GOTO 1320 
  968.  1340 CONTINUE
  969.  1320 LUMI(I,K)=WS*TT 
  970.  1310 CONTINUE
  971. C CALCULATION OF DIRECT  SUNSHINE ILLUMINATION FOR OUTSIDE ENCLOSURE SURFACES 
  972.  1350 IF(NSS.LE.0)GO TO 210 
  973.       II=0
  974.       DO 90 K=2,NSP1
  975.       NK=NW(K)
  976.       DO 90 J=1,NK
  977.       II=II+1 
  978.       FR(J)=0.
  979. C ARE SUNNY AREAS POSSIBLE ON THIS SURFACE? 
  980.       CBJ=LS(1)*LL(K,J,7)+LS(2)*LL(K,J,8)+LS(3)*LL(K,J,9) 
  981.       IF(CBJ.LE.1.E-4) GO TO 90 
  982. C BREAK UP SURFACE INTO 11 BY 11 NODES AND CHECK FOR SUN (SEND RAYS TO SUN) 
  983.       DO 95 M=1,11
  984.       ETAM=(M-1.)/10. 
  985.       DO 95 N=1,11
  986.       ETAN=(N-1.)/10. 
  987.       XPP=X0(K,J,4)-(X0(K,J,4)-X0(K,J,6)+X0(K,J,5))*ETAM
  988.       XP=X0(K,J,5)*ETAM+XPP*ETAN
  989.       YP=X0(K,J,7)*ETAM 
  990.       DO 94 L=1,3 
  991.    94 X(L)=X0(K,J,L)+LL(K,J,L)*XP+LL(K,J,L+3)*YP
  992. C ANYTHING BLOCKING THE SUN?
  993.       DO 93 JJ=1,NK 
  994.       IF(J.EQ.JJ) GO TO 93
  995.       CBL=LS(1)*LL(K,JJ,7)+LS(2)*LL(K,JJ,8)+LS(3)*LL(K,JJ,9)
  996.       IF(CBL.GE.-1.E-4)GO TO 93 
  997.       CALL SECT (X,LS,K,JJ,KUT) 
  998.       IF(KUT.EQ.1) GO TO 95 
  999.    93 CONTINUE
  1000.       KD(II,M,N)=1
  1001. C SUNNY FRACTION OF SURFACE 
  1002.       FR(J)=FR(J)+C(M,11)*C(N,11)*XPP 
  1003.    95 CONTINUE
  1004.       IF(FR(J).LE.1.E-4)GO TO 90
  1005.       FR(J)=FR(J)*2/(X0(K,J,4)+X0(K,J,6)-X0(K,J,5)) 
  1006.       FS(II)=(1.-FR(J))/FR(J) 
  1007.       KSUN(K,J)=1 
  1008. C CONTRIBUTION OF DIRECT SUN TO OUTSIDE SURFACE LUMINANCE 
  1009.       DSOL(K,J)=FR(J)*CBJ*ES*RHO(K,J) 
  1010.    90 CONTINUE
  1011. C CALCULATION OF F I-J IN OUTSIDE ENCLOSURES
  1012.   100 ZENL0=ZENL
  1013.       IF(NSS.LE.0) GOTO 210 
  1014.       DO 400 K=2,NSP1 
  1015.       NMW=NW(K) 
  1016.       CALL CONFAC(K,NMW,F)
  1017.   400 CONTINUE
  1018. C LUMINANCES FOR EXTERNAL REFLECTIONS (SOLUTION OF SIMULTANEOUS EQS.
  1019. C            BY MATRIX INVERSION) 
  1020.       DO 220 K=2,NSP1 
  1021.       NKT=NW(K) 
  1022.       DO 190 I=1,NKT
  1023.       DO 180 J=1,NKT
  1024.       DIJ=(I/J)*(J/I) 
  1025.   180 COEF(I,J)=DIJ/RHO(K,J)-F(K,I,J) 
  1026.   190 COFB(I,1)=ZENL*F(K,I,NKT+1)+DSOL(K,I)/RHO(K,I)
  1027.       IF (NKT.EQ.1) GOTO 230
  1028.       CALL MATINV(COEF,NKT,COFB,1,DETERM) 
  1029.       DO 200 I=1,NKT
  1030.   200 LUM(K,I)=COFB(I,1)
  1031.       GOTO 220
  1032. 230   LUM(K,1)=COFB(1,1)/COEF(1,1)
  1033. 220   CONTINUE
  1034. C CALCULATION OF OVERHANG LUMINANCES
  1035. C (USING MONTE CARLO, ASSUMING NO INTERFERENCE BETWEEN OVERHANGS) 
  1036.   210 NBOH=NBUNDL/5 
  1037.       DO 1495 IW=1,N1 
  1038.       IF(IOH(IW).EQ.0) GOTO 1495
  1039.       K=IDS(IW) 
  1040. C NUMBER OF OVERHANG SURFACES FOR THIS WINDOW 
  1041.       II1=ISTART(IW)
  1042.       II2=ISTART(IW+1)-1
  1043.       DO 1450 II=II1,II2
  1044.       SUM=0.
  1045. C SEND OUT BUNDLES
  1046.       DO 1455 NBUN=1,NBOH 
  1047. C ************************ RANDOM NUMBER GENERATOR ********************** 
  1048.       DO 112,INDEX=1,4
  1049. 112   RS(INDEX)=RANDOM(ISEED)
  1050. C CHOOSE DIRECTION
  1051.       SINB=SQRT(RS(1))
  1052.       COSB=SQRT(1.-RS(1)) 
  1053.       THET=2.*PI*RS(2)
  1054.       COST=COS(THET)
  1055.       SINT=SIN(THET)
  1056. C CHOOSE EMISSION POINT 
  1057.       DO 1460 L=1,3 
  1058.       X(L)=X0(NOH,II,L)+LL(NOH,II,L)*X0(NOH,II,4)*RS(3) 
  1059.      1                 +LL(NOH,II,L+3)*X0(NOH,II,7)*RS(4) 
  1060.       Y(L)=(LL(NOH,II,L)*COST+LL(NOH,II,L+3)*SINT)*SINB 
  1061.      1                       +LL(NOH,II,L+6)*COSB 
  1062.  1460 YM(L)=-Y(L) 
  1063.       IF(K.EQ.0) GOTO 1466
  1064. C DOES IT HIT OUTSIDE SURFACE OF WINDOW?
  1065.       NWK=NW(K) 
  1066.       CALL SECT(X,YM,1,IW+NTS,KUT)
  1067.       IF(KUT.NE.1) GOTO 1462
  1068.       SUM=SUM+RHO(1,IW)/RHO(K,1)*LUM(K,1) 
  1069.       GOTO 1455 
  1070. C ANY OUTSIDE SURFACE?
  1071.  1462 IF (NSS.LT.1) GOTO 1466 
  1072.       DO 1465 IR=1,NWK
  1073.       CALL SECT(X,Y,K,IR,KUT) 
  1074.       IF(KUT.NE.1) GOTO 1465
  1075.       SUM=SUM+LUM(K,IR) 
  1076.       GOTO 1455 
  1077.  1465 CONTINUE
  1078. C HITS THE SKY, (OR GROUND IF Y POINTS BELOW HORIZ) 
  1079.  1466 SUM=SUM+RLPZ(ICLD,Y)*ZENL 
  1080.  1455 CONTINUE
  1081.       LUM(NOH,II)=OHREF(IW)*SUM/NBOH
  1082.       IF(ICLD.EQ.1.OR.ICLD.EQ.3) GOTO 1470
  1083. C DOES DIRECT SUN HIT INSIDE OVERHANG SURFACES? 
  1084.       IF(ISUN(IW).EQ.0) GOTO 1470 
  1085.       CBS=LS(1)*LL(NOH,II,7)+LS(2)*LL(NOH,II,8)+LS(3)*LL(NOH,II,9)
  1086.       IF(CBS.LT.1.E-4) GOTO 1470
  1087.       IF(K.EQ.0) GOTO 1476
  1088.       DO 1475 IR=1,NWK
  1089.       CALL SECT(X,LS,K,IR,KUT)
  1090.       IF(KUT.EQ.1) GOTO 1470
  1091.  1475 CONTINUE
  1092.  1476 LUM(NOH,II)=LUM(NOH,II)+OHREF(IW)*ES*CBS
  1093.  1470 IF(KOH(IW).NE.2) GOTO 1450
  1094. C FOR TRANSLUCENT OVERHANG ALSO NEED LUMINANCE CONTRIBUTION FROM OUTSIDE
  1095. C   OF OVERHANG SURFACE; ROUTINE SAME AS THE INSIDE (SEE ABOVE) 
  1096.       SUM=0.
  1097.       DO 1480 NBUN=1,NBOH 
  1098. C ************************ RANDOM NUMBER GENERATOR ********************** 
  1099.       DO 113 INDEX=1,4
  1100. 113   RS(INDEX)=RANDOM(ISEED)
  1101.       SINB=SQRT(RS(1))
  1102.       COSB=SQRT(1.-RS(1)) 
  1103.       THET=2.*PI*RS(2)
  1104.       COST=COS(THET)
  1105.       SINT=SIN(THET)
  1106.       DO 1485 L=1,3 
  1107.       X(L)=X0(NOH,II,L)+LL(NOH,II,L)*X0(NOH,II,4)*RS(3) 
  1108.      1                 +LL(NOH,II,L+3)*X0(NOH,II,7)*RS(4) 
  1109.  1485 Y(L)=-(LL(NOH,II,L)*COST+LL(NOH,II,L+3)*SINT)*SINB
  1110.      1                       -LL(NOH,II,L+6)*COSB 
  1111.       IF(K.EQ.0) GOTO 1491
  1112.       DO 1490 IR=1,NWK
  1113.       CALL SECT(X,Y,K,IR,KUT) 
  1114.       IF(KUT.NE.1) GOTO 1490
  1115.       SUM=SUM+LUM(K,IR) 
  1116.       GOTO 1480 
  1117.  1490 CONTINUE
  1118.  1491 SUM=SUM+RLPZ(ICLD,Y)*ZENL 
  1119.  1480 CONTINUE
  1120.       LUM(NOH,II)=LUM(NOH,II)+OHTAU(IW)*SUM/NBOH
  1121.       IF(ICLD.EQ.1.OR.ICLD.EQ.3) GOTO 1450
  1122.       IF(ISUN(IW).EQ.0) GOTO 1450 
  1123.       CBS=-LS(1)*LL(NOH,II,7)-LS(2)*LL(NOH,II,8)-LS(3)*LL(NOH,II,9) 
  1124.       IF(CBS.LT.1.E-4) GOTO 1450
  1125.       IF(K.EQ.0) GOTO 1451
  1126.       DO 1505 IR=1,NWK
  1127.       CALL SECT(X,LS,K,IR,KUT)
  1128.       IF(KUT.EQ.1) GOTO 1450
  1129.  1505 CONTINUE
  1130.  1451 LUM(NOH,II)=LUM(NOH,II)+OHTAU(IW)*ES*CBS
  1131.  1450 CONTINUE
  1132.  1495 CONTINUE
  1133. C OUTSIDE ILLUMINATION ON CURTAINED AND DIFFUSE WINDOWS 
  1134. C (USING MIXED METHOD.. INTEGRATION AND MONTE CARLO)
  1135.       IF(NC.EQ.N1) GOTO 1600
  1136.       DO 1500 I=N01,N1
  1137.       IO=I+NTS
  1138.       XY1=(X0(1,IO,6)-X0(1,IO,5))/X0(1,IO,4)
  1139.       ID1=1 
  1140.       IF(ABS(XY1-1.).LT.1.E-3) ID1=0
  1141.       AX=XY1*ID1
  1142.       HI=0. 
  1143.       K=IDS(I)
  1144. C INTEGRATE OVER ALL DIRECTIONS 
  1145.       DO 1550 IETA=1,21 
  1146.       ETA=(IETA-1.)/20. 
  1147.       SETA=SQRT(1.-ETA*ETA) 
  1148.       TT=C(IETA,21)*ETA*TAUB(I,ETA) 
  1149.       DO 1550 IMU=1,21
  1150.       AMU=(IMU-1.)/20.
  1151.       SWY=SETA*COS(2.*PI*AMU) 
  1152.       SWZ=SETA*SIN(2.*PI*AMU) 
  1153. C EMISSION LOCATION FIXED BY RANDOM NUMBERS 
  1154. C ************************ RANDOM NUMBER GENERATOR ********************** 
  1155.       DO 114,INDEX=1,4
  1156. 114   RS(INDEX)=RANDOM(ISEED)
  1157.       YY=(1.-SQRT(1.-(1.-XY1*XY1)*RS(1)))/(1.-AX)+(1-ID1)*RS(1) 
  1158.       XX=X0(1,IO,5)*YY+X0(1,IO,4)*(1.-(1.-XY1)*YY)*RS(2)
  1159.       DO 1520 L=1,3 
  1160.       X(L)=X0(1,IO,L)+LL(1,I,L)*XX+LL(1,I,L+3)*YY*X0(1,IO,7)
  1161.  1520 Y(L)=-ETA*LL(1,I,L+6)+SWY*LL(1,I,L+3)+SWZ*LL(1,I,L) 
  1162. C ANY OVERHANG IN THE WAY?
  1163.       IF(IOH(I).EQ.0) GOTO 1545 
  1164.       II1=ISTART(I) 
  1165.       II2=ISTART(I+1)-1 
  1166.       DO 1515 II=II1,II2
  1167.       CALL SECT(X,Y,NOH,II,KUT) 
  1168.       IF(KUT.NE.1) GOTO 1515
  1169.       SS=LUM(NOH,II)
  1170.       GOTO 1550 
  1171.  1515 CONTINUE
  1172. C ANY OUTSIDE SURFACE IN THE WAY? 
  1173.  1545 IF(K.EQ.0) GOTO 1530
  1174.       NWK=NW(K) 
  1175.       DO 1540 J=1,NWK 
  1176.       IF(KOB(K,I,J)) 1540,1535,1525 
  1177.  1525 JR=KKOB(K,I,J)
  1178.       SS=LUM(K,JR)
  1179.       CALL SECT(X,Y,K,JR,KUT) 
  1180.       IF(KUT.EQ.1) GOTO 1550
  1181.  1535 CALL SECT(X,Y,K,J,KUT)
  1182.       IF(KUT.NE.1) GOTO 1540
  1183.       SS=LUM(K,J) 
  1184.       GOTO 1550 
  1185.  1540 CONTINUE
  1186. C HITS THE SKY, (OR GROUND IF Y POINTS BELOW HORIZ) 
  1187.  1530 SS=ZENL*RLPZ(ICLD,Y)
  1188.  1550 HI=HI+TT*SS*C(IMU,21) 
  1189.       KMAX=NUM(I) 
  1190.       DO 1500 K=1,KMAX
  1191.  1500 LUMI(I,K)=LUMI(I,K)+2.*(1.-ALPHA(I)*(1/ISD(I)))*HI
  1192. C OUTSIDE ILLUMINATION ON INSIDE NODES
  1193. C (INCLUDES INSIDE LUMINANCE OF WINDOWS, IN PARTICULAR DIFFUSING WINDOWS) 
  1194.  1600 DO 1750 I=1,NTS 
  1195.       KMAXI=NUM(I)
  1196.       FRAC=RHO(1,I)/PI
  1197.       DO 1750 J=1,N1
  1198. C CAN I SEE J?
  1199.       IF(IOB(1,I,J).LT.0) GOTO 1750 
  1200.       KMAXJ=NUM(J)
  1201.       K=IDS(J)
  1202.       IF(K.GT.0.AND.J.LE.NC) GOTO 1610
  1203.       IF(K.GT.0.AND.ISD(J).EQ.1) GOTO 1610
  1204. C AUXILIARY DATA FOR COMPUTER EFFICIENCY, FOR CASE OF NO OUTSIDE ILLUMINATION 
  1205. C   POSSIBLE ON THAT NODE 
  1206.       K=4 
  1207.       LUM(4,1)=0. 
  1208.       K1=30 
  1209.       K2=30 
  1210.       KOB(4,I,30)=-1
  1211.       GOTO 1620 
  1212.  1610 K1=1
  1213.       K2=NW(K)
  1214.  1620 IF(IOB(1,I,J).GT.0) IIOB=IOB(1,I,J) 
  1215. C THE FOLLOWING ALGORITHMS ARE FOR CASES WITH & WITHOUT INTERNAL OBSTRUCTORS
  1216.       DO 1660 KI=1,KMAXI
  1217. C START CALCULATIONS FOR NODE KI ON SURFACE I 
  1218.       DO 1630 L=1,3 
  1219.  1630 X(L)=XN(I,KI,L) 
  1220.       HIT=0.
  1221.       DO 1642 KJ=1,KMAXJ
  1222. C DIRECTION, COSINES*S, AND DISTANCE-SQUARED TO NODE KJ ON J (WINDOW) 
  1223.       SCB1=0. 
  1224.       SCB2=0. 
  1225.       SSQ=0.
  1226.       DO 1650 L=1,3 
  1227.       Y(L)=XN(J,KJ,L)-X(L)
  1228.       SCB1=SCB1+Y(L)*LL(1,I,L+6)
  1229.       SCB2=SCB2-Y(L)*LL(1,J,L+6)
  1230.  1650 SSQ=SSQ+Y(L)*Y(L) 
  1231.       IF(IOB(1,I,J).EQ.0) GOTO 1680 
  1232. C ANY INTERNAL OBSTRUCTORS IN THE WAY?
  1233.       DO 1710 IO=1,IIOB 
  1234.       JO=JOB(I,J,IO)
  1235.       CALL SECT(X,Y,1,JO,KUT) 
  1236.       IF(KUT.EQ.1) GOTO 1642
  1237.  1710 CONTINUE
  1238.  1680 S=SQRT(SSQ) 
  1239.       DO 1675 L=1,3 
  1240.  1675 Y(L)=Y(L)/S 
  1241.       ICOS1=1.+SCB1/S 
  1242.       ICOS2=1.+SCB2/S 
  1243. C CONFIGURATION FACTOR (CORRECTED BY FUDGE FACTOR FOR CLOSE NODES)
  1244.       FIJ=ICOS1*ICOS2*SCB1*SCB2/(SSQ*SSQ)*AIK(J,KJ) 
  1245.       FIJ=FIJ/(1.+.6*FIJ*FIJ) 
  1246. C ASSUME OUTSIDE-WINDOW-WALL LUMINANCE FOR WINDOW FRAME 
  1247.       HI=LUM(K,1) 
  1248.       CB2=SCB2/S
  1249. C DOES RAY GET TO THE OUTSIDE?
  1250.       CALL SECT(X,Y,1,J+NTS,KUT)
  1251.       SDM=1.
  1252.       IF(IOB(1,I,J).LE.0.AND.KUT.NE.1) GOTO 1640
  1253.       IF(KUT.NE.1) GOTO 1635
  1254. C DOES RAY THROUGH WINDOW HIT ANY OUTSIDE SURFACE?
  1255.       DO 1670 JKL=K1,K2 
  1256.       JK=JKL
  1257.       IF(KOB(K,I,JK)) 1670,1625,1615
  1258.  1615 JKK=KKOB(K,I,JK)
  1259.       CALL SECT(X,Y,K,JKK,KUT)
  1260.       IF(KUT.NE.1) GOTO 1625
  1261.       JK=JKK
  1262.       GOTO 1605 
  1263.  1625 CALL SECT(X,Y,K,JK,KUT) 
  1264.       IF(KUT.NE.1) GOTO 1670
  1265.  1605 HI=LUM(K,JK)
  1266.       IF(ICLD.NE.2.OR.KSUN(K,JK).NE.1) GOTO 1635
  1267. C IS POINT ON OUTSIDE SURFACE IN SUN OR IN SHADE? 
  1268. C INTERPOLATE OUTSIDE LUMINANCES IF CLOSE TO SUN/SHADE DIVIDE 
  1269.       II=JK 
  1270.       KM1=K-1 
  1271.       DO 1655 K3=1,KM1
  1272.  1655 II=II+NW(K3)
  1273.       TL=LUM(K,JK)-DSOL(K,JK) 
  1274.       TH=LUM(K,JK)+FS(II)*DSOL(K,JK)
  1275.       ETAM=YDP/X0(K,JK,7) 
  1276.       XPP=X0(K,JK,4)-(X0(K,JK,4)-X0(K,JK,6)+X0(K,JK,5))*ETAM
  1277.       ETAN=(XDP-X0(K,JK,5)*ETAM)/XPP
  1278.       TY=10*ETAM+1
  1279.       LY=TY 
  1280.       TX=10*ETAN+1
  1281.       LX=TX 
  1282.       F1=KD(II,LY,LX)+(TY-LY)*(KD(II,LY+1,LX)-KD(II,LY,LX)) 
  1283.       F2=KD(II,LY,LX+1)+(TY-LY)*(KD(II,LY+1,LX+1)-KD(II,LY,LX+1)) 
  1284.       PART=(F1+(TX-LX)*(F2-F1)) 
  1285.       HI=TL+PART*(TH-TL)
  1286.       GOTO 1635 
  1287.  1670 CONTINUE
  1288. C HITS SKY, (OR GROUND IF Y POINTS BELOW HORIZ) 
  1289.       HI=ZENL*RLPZ(ICLD,Y)
  1290. C ANY OVERHANG IN THE WAY?
  1291.  1635 IF(IOH(J).EQ.0) GOTO 1640 
  1292.       II1=ISTART(J) 
  1293.       II2=ISTART(J+1)-1 
  1294.       DO 1645 II=II1,II2
  1295.       CALL SECT(X,Y,NOH,II,KUT) 
  1296.       IF(KUT.NE.1) GOTO 1645
  1297.       HI=LUM(NOH,II)+OHTAU(J)*HI*(2-KOH(J)) 
  1298.       GOTO 1640 
  1299.  1645 CONTINUE
  1300. C LUMINANCE CONTRIBUTION FROM OUTSIDE (HI) AND WINDOW ITSELF
  1301.  1640 HIT=HIT+(HI*TAUB(J,CB2)*ALPHA(J)*(1/ISD(J))*SDM+LUMI(J,KJ))*FIJ 
  1302.  1642 CONTINUE
  1303.  1660 LUMI(I,KI)=LUMI(I,KI)+FRAC*HIT
  1304. 1750  CONTINUE
  1305. C LUMINANCES FOR INTERNAL REFLECTIONS 
  1306. C KEEP DISTINCTION BETWEEN TOTAL (LUMF) AND EXTERNAL CONTRIBUTION (LUMI)
  1307.       DO 1760 I=1,NT
  1308.       KMAX=NUM(I) 
  1309.       DO 1760 K=1,KMAX
  1310.  1760 LUMF(I,K)=LUMI(I,K) 
  1311. C GO THROUGH DESIRED NUMBER OF ITERATIONS 
  1312.       DO 2200 ITER=1,NUMIT
  1313.       DO 1900 I=1,NT
  1314. C IF WINDOW-REFLECTANCE IS SMALL, ITS CONTRIBUTION IS NEGLECTED 
  1315. C    (FOR COMPUTER EFFICIENCY)
  1316. C THE ALGORITHMS BELOW ARE BASICALLY THE SAME AS FOR OUTSIDE/WINDOW LUMINANCE 
  1317. C    EFFECTS COMMENTED ON ABOVE 
  1318.       IF(RHO(1,I).LE..15) GOTO 1900 
  1319.       FRAC=RHO(1,I)/PI
  1320.       KMAXI=NUM(I)
  1321.       DO 1805 KI=1,KMAXI
  1322.  1805 DELF(KI)=0. 
  1323.       DO 1890 J=N11,NT
  1324.       KMAXJ=NUM(J)
  1325.       IF(IOB(1,I,J)) 1890,1855,1850 
  1326.  1850 IIOB=IOB(1,I,J) 
  1327.  1855 DO 1880 KI=1,KMAXI
  1328.       DO 1860 L=1,3 
  1329.  1860 X(L)=XN(I,KI,L) 
  1330.       DO 1880 KJ=1,KMAXJ
  1331.       SCB1=0. 
  1332.       SCB2=0. 
  1333.       SSQ=0.
  1334.       DO 1870 L=1,3 
  1335.       Y(L)=XN(J,KJ,L)-X(L)
  1336.       SCB1=SCB1+Y(L)*LL(1,I,L+6)
  1337.       SCB2=SCB2-Y(L)*LL(1,J,L+6)
  1338.  1870 SSQ=SSQ+Y(L)*Y(L) 
  1339.       IF(IOB(1,I,J).EQ.0) GOTO 1877 
  1340.       DO 1875 IO=1,IIOB 
  1341.       CALL SECT(X,Y,1,JOB(I,J,IO),KUT)
  1342.       IF(KUT.EQ.1) GOTO 1880
  1343.  1875 CONTINUE
  1344.  1877 ICOS1=1.+SCB1/(1.+SSQ)
  1345.       ICOS2=1.+SCB2/(1.+SSQ)
  1346.       FIJ=SCB1*SCB2/(SSQ*SSQ)*AIK(J,KJ)*ICOS1*ICOS2 
  1347.       FIJ=FIJ/(1.+.6*FIJ*FIJ) 
  1348.       DELF(KI)=DELF(KI)+FRAC*FIJ*LUMF(J,KJ) 
  1349.  1880 CONTINUE
  1350.  1890 CONTINUE
  1351.       DO 1895 KI=1,KMAXI
  1352. C ITERATION FINISHED FOR THIS SURFACE, IMPROVE VALUES FOR LUMF
  1353.  1895 LUMF(I,KI)=LUMI(I,KI)+DELF(KI)
  1354.  1900 CONTINUE
  1355.  2200 CONTINUE
  1356. C CALCULATION OF ILLUMINATION AND DAYLIGHT FACTORS FOR WORKING SURFACE NODES
  1357. C ALGORITHMS ARE THE SAME AS FOR INTERNAL REFLECTIONS, BUT NO ITERATION,
  1358. C BECAUSE OF THEIR IMPORTANCE, CONFIGURATION FACTORS FOR CLOSE NODES
  1359. C ARE CALCULATED MORE ACCURATELY
  1360.       DO 1995 I=NT1,NTS 
  1361.       KMAXI=NUM(I)
  1362.       DO 1905 KI=1,KMAXI
  1363.  1905 DELF(KI)=0. 
  1364.       DO 1990 J=N11,NT
  1365.       KMAXJ=NUM(J)
  1366.       IF(IOB(1,I,J)) 1990,1910,1950 
  1367.  1950 IIOB=IOB(1,I,J) 
  1368.  1910 DO 1980 KI=1,KMAXI
  1369.       DO 1960 L=1,3 
  1370.  1960 X(L)=XN(I,KI,L) 
  1371.       DO 1980 KJ=1,KMAXJ
  1372.       SCB1=0. 
  1373.       SCB2=0. 
  1374.       SSQ=0.
  1375.       DO 1970 L=1,3 
  1376.       Y(L)=XN(J,KJ,L)-X(L)
  1377.       SCB1=SCB1+Y(L)*LL(1,I,L+6)
  1378.       SCB2=SCB2-Y(L)*LL(1,J,L+6)
  1379.  1970 SSQ=SSQ+Y(L)*Y(L) 
  1380.       IF(IOB(1,I,J).EQ.0) GOTO 1977 
  1381.       DO 1975 IO=1,IIOB 
  1382.       CALL SECT(X,Y,1,JOB(I,J,IO),KUT)
  1383.       IF(KUT.EQ.1) GOTO 1980
  1384.  1975 CONTINUE
  1385.  1977 ICOS1=SCB1/(1.+SSQ)+1.
  1386.       ICOS2=SCB2/(1.+SSQ)+1.
  1387.       FIJ=ICOS1*ICOS2*SCB1*SCB2/(SSQ*SSQ)*AIK(J,KJ) 
  1388.       IF(AIK(J,KJ)/SSQ.LT.1.) GOTO 2160 
  1389.       KKJ=KJ
  1390.  2100 L1=(KKJ-1)/NM(J)
  1391.       L2=KKJ-L1*NM(J) 
  1392.       IF(J.LE.N2) GOTO 2140 
  1393.       ETA=1.-(2.*L1+1.)/(2.*NN(J))
  1394.       XSI=(2.*L2-1.)/(2.*NM(J)) 
  1395.       CC=X0(1,J,4)-(X0(1,J,4)+X0(1,J,5)-X0(1,J,6))*ETA
  1396.       XJP=X0(1,J,5)*ETA+CC*XSI
  1397.       YJP=X0(1,J,7)*ETA 
  1398.       XYZ=0.
  1399.       DO 2150 L=1,3 
  1400.  2150 XYZ=XYZ+X0(1,J,L)+LL(1,J,L)*XJP+LL(1,J,L+3)*YJP-XN(J,KJ,L)
  1401.       IF(ABS(XYZ).LT.1E-4) GOTO 2140
  1402.       KKJ=KKJ+1 
  1403.       GOTO 2100 
  1404.  2140 FIJ=0.
  1405.       DO 2110 J1=1,3
  1406.       ETA=1.-(2.*L1-(.5-J1)/1.5)/(2.*NN(J)) 
  1407.       CC=X0(1,J,4)-(X0(1,J,4)+X0(1,J,5)-X0(1,J,6))*ETA
  1408.       AP=X0(1,J,7)*CC/(9.*NN(J)*NM(J))
  1409.       DO 2110 J2=1,3
  1410.       XSI=(2.*L2+(.5-J2)/1.5)/(2.*NM(J))
  1411.       SCB1=0. 
  1412.       SCB2=0. 
  1413.       SSQ=0.
  1414.       XJP=X0(1,J,5)*ETA+CC*XSI
  1415.       YJP=X0(1,J,7)*ETA 
  1416.       DO 2120 L=1,3 
  1417.       Y(L)=X0(1,J,L)+LL(1,J,L)*XJP+LL(1,J,L+3)*YJP-X(L) 
  1418.       SCB1=SCB1+Y(L)*LL(1,I,L+6)
  1419.       SCB2=SCB2-Y(L)*LL(1,J,L+6)
  1420.  2120 SSQ=SSQ+Y(L)*Y(L) 
  1421.       ICOS1=SCB1/(1.+SSQ)+1.
  1422.       ICOS2=SCB2/(1.+SSQ)+1.
  1423.  2110 FIJ=FIJ+ICOS1*ICOS2*SCB1*SCB2/(SSQ*SSQ)*AP
  1424.  2160 DELF(KI)=DELF(KI)+FIJ*LUMF(J,KJ)
  1425.  1980 CONTINUE
  1426.  1990 CONTINUE
  1427. C ADD THE INTERNAL-REFLECTION CONTRIBUTION TO THE WORKING SURFACE 
  1428. C   SURFACE ILLUMINATION (WHICH SO FAR CONTAINS DIRECT SUN AND
  1429. C   CONTRIBUTION FROM OUTSIDE (INCLUDING SKY, EXTERNAL REFLECTIONS, 
  1430. C   AND DIFFUSE WINDOW LIGHT, SUCH AS TRANSMISSION THROUGH CURTAINS,
  1431. C   SLATTED BLINDS, DIFFUSING WINDOWS)
  1432.       DO 1995 KI=1,KMAXI
  1433.       LUMF(I,KI)=LUMI(I,KI)+DELF(KI)/PI 
  1434.  1995 DAYF(I-NT,KI)=100.*(LUMF(I,KI)-WSOL(I-NT,KI))/SKYC
  1435. C PRINT WALL NODAL DATA AND LUMINANCES
  1436.  1405 WRITE(7,6250) SOLC,SKYC,ZENL
  1437.       IF(IWRITE.EQ.1) GOTO 1440 
  1438. C PRINTING OF LIGHT EXCHANGE FACTORS IN OUTSIDE ENCLOSURES
  1439.       DO 1410 K=2,NSP1
  1440.       NMW=NW(K) 
  1441.       NM1=NMW+1 
  1442.       K4=K-1
  1443.       WRITE(7,6560)K4 
  1444.       WRITE(7,6570)(J,J=1,NM1)
  1445.       WRITE(7,6572) 
  1446.       DO 1410 I=1,NMW 
  1447.  1410 WRITE(7,6580) I,(F(K,I,J),J=1,NM1)
  1448. C PRINTING OF OUTSIDE LUMINANCES
  1449.       DO 1420 K=1,NSS 
  1450.       NKT=NW(K+1) 
  1451.       WRITE(7,7010)K
  1452.       WRITE(7,7020)(I,I=1,NKT)
  1453.  1420 WRITE(7,6200)(LUM(K+1,I),I=1,NKT) 
  1454.       DO 1415 IW=1,N1 
  1455.       IF(IOH(IW).EQ.0) GOTO 1415
  1456.       K=IDS(IW) 
  1457.       II1=ISTART(IW)
  1458.       II2=ISTART(IW+1)-1
  1459.       WRITE(7,6041) IW
  1460.       IF(IOH(IW).EQ.1) WRITE(7,6042)(LUM(NOH,II),II=II1,II2)
  1461.       IF(IOH(IW).EQ.2) WRITE(7,6043)(LUM(NOH,II),II=II1,II2)
  1462.       IF(IOH(IW).EQ.3) WRITE(7,6044)(LUM(NOH,II),II=II1,II2)
  1463.       IF(IOH(IW).EQ.4) WRITE(7,6045)(LUM(NOH,II),II=II1,II2)
  1464.       IF(IOH(IW).EQ.5) WRITE(7,6046)(LUM(NOH,II),II=II1,II2)
  1465.  1415 CONTINUE
  1466.       WRITE(7,6710) 
  1467.       DO 1400 I=1,NT
  1468.       KP=NM(I)
  1469.       KS=1+(KP-1)/12
  1470.       L=NN(I) 
  1471.       DO 1400 L1=1,L,KS 
  1472.       KL=1+(L1-1)*KP
  1473.       KR=L1*KP
  1474.       IF(KL.GT.NUM(I)) GOTO 1440
  1475.       IF(KR.GT.NUM(I)) KR=NUM(I)
  1476.       WRITE(7,6720)(K,K=KL,KR,KS) 
  1477.       WRITE(7,6730)I,(XN(I,K,1),K=KL,KR,KS) 
  1478.       WRITE(7,6740)(XN(I,K,2),K=KL,KR,KS) 
  1479.       WRITE(7,6750)(XN(I,K,3),K=KL,KR,KS) 
  1480.       WRITE(7,6760)(AIK(I,K),K=KL,KR,KS)
  1481.  1400 WRITE(7,6770)(LUMF(I,K),K=KL,KR,KS) 
  1482. C PRINT WORKING SURFACE NODAL DATA, ILLUMINATION, DAYLIGHT FACTOR 
  1483.  1440 WRITE(7,6715) 
  1484.       WRITE(7,6716)
  1485.       IF(INID.EQ.1)WRITE(7,6717)
  1486.       IF(INID.EQ.1)NT1=NWINDO+7 
  1487.       DO 1430 I=NT1,NTS 
  1488.       KP=NM(I)
  1489.       KS=1+(KP-1)/12
  1490.       L=NN(I) 
  1491.       DO 1430 L1=1,L,KS 
  1492.       KL=1+(L1-1)*KP
  1493.       KR=L1*KP
  1494.       WRITE(7,6720)(K,K=KL,KR,KS) 
  1495.       IF(INID.EQ.1)WRITE(7,6730)I,(ABS(XN(I,K,1)),K=KL,KR,KS) 
  1496.       IF(INID.EQ.2)WRITE(7,6730)I,(XN(I,K,1),K=KL,KR,KS)
  1497.       WRITE(7,6740)(XN(I,K,2),K=KL,KR,KS) 
  1498.       WRITE(7,6750)(XN(I,K,3),K=KL,KR,KS) 
  1499.       WRITE(7,6773) (LUMI(I,K),K=KL,KR,KS)
  1500.       WRITE(7,6774) (DELF(K)/PI,K=KL,KR,KS) 
  1501.       WRITE(7,6775)(LUMF(I,K),K=KL,KR,KS) 
  1502.       IF(INID.EQ.1)WRITE(7,6780)(DAYF(1,K),K=KL,KR,KS)
  1503.  1430 IF(INID.EQ.2)WRITE(7,6780)(DAYF(I-NT,K),K=KL,KR,KS) 
  1504.       IF(IPLOT.EQ.0) GOTO 3400
  1505. C SET UP DATA FOR THE PLOTTING ROUTINE; CHOOSE LOCAL ORIGIN OF FIRST
  1506. C WORKING SURFACE AS OVERALL ORIGIN FOR PLOT, AND STORE COORDINATES 
  1507. C FOR CORNERPOINTS@ (MUST BE RECTANGULAR) 
  1508.       XY(1,1,1)=0.
  1509.       XY(1,1,2)=0.
  1510.       XY(1,2,1)=X0(1,NT1,5) 
  1511.       XY(1,2,2)=X0(1,NT1,7) 
  1512.       XY(1,3,1)=X0(1,NT1,6) 
  1513.       XY(1,3,2)=X0(1,NT1,7) 
  1514.       XY(1,4,1)=X0(1,NT1,4) 
  1515.       XY(1,4,2)=0.
  1516. C SUBTRACT DIRECT SUN FROM ILLUMINATION FOR PLOTTING PURPOSES 
  1517. C AND RE-ORDER NODES
  1518.       KMAX=NUM(NT1) 
  1519.       DO 3000 K=1,KMAX
  1520.       K1=(K-1)/NM(NT1)
  1521.       K2=K+(NN(NT1)-2*K1-1)*NM(NT1) 
  1522.  3000 LUMI(1,K)=LUMF(NT1,K2)-WSOL(1,K2) 
  1523. C FIND ENDPOINTS FOR WINDOW PROJECTION ON FIRST WORKING SURFACE 
  1524.       DO 2900 I=1,N1
  1525.       DO 2800 L=1,3 
  1526.       PLTTMP(1,L)=X0(1,I,L) 
  1527.  2800 PLTTMP(2,L)=PLTTMP(1,L)+LL(1,I,L)*X0(1,I,6)+LL(1,I,L+3)*X0(1,I,7) 
  1528.       DO 2900 I4=1,2
  1529.       DO 2900 I2=1,2
  1530.       XYW(I,I4,I2)=0. 
  1531.       DO 2900 L=1,3 
  1532.       L2=L+3*(I2-1) 
  1533.  2900 XYW(I,I4,I2)=XYW(I,I4,I2)+(PLTTMP(I4,L)-X0(1,NT1,L))*LL(1,NT1,L2) 
  1534.       IF(NWS.EQ.1) GOTO 3200
  1535. C DO THE SAME AS ABOVE FOR ANY ADDITIONAL WORKING SURFACES
  1536. C     WITH RESPECT TO LOCAL AXES OF FIRST WORK SFC
  1537.       DO 3100 IW=2,NWS
  1538.       DO 3010 L=1,3 
  1539.       PLTTMP(1,L)=X0(1,NT+IW,L) 
  1540.       PLTTMP(2,L)=PLTTMP(1,L)+LL(1,NT+IW,L)*X0(1,NT+IW,5)+
  1541.      1       LL(1,NT+IW,L+3)*X0(1,NT+IW,7)
  1542.       PLTTMP(3,L)=PLTTMP(1,L)+LL(1,NT+IW,L)*X0(1,NT+IW,6)+
  1543.      1       LL(1,NT+IW,L+3)*X0(1,NT+IW,7)
  1544.  3010 PLTTMP(4,L)=PLTTMP(1,L)+LL(1,NT+IW,L)*X0(1,NT+IW,4) 
  1545.       DO 3020 I4=1,4
  1546.       DO 3020 I2=1,2
  1547.       XY(IW,I4,I2)=0. 
  1548.       DO 3020 L1=1,3
  1549.       LI2=L1+(I2-1)*3 
  1550.  3020 XY(IW,I4,I2)=XY(IW,I4,I2)+(PLTTMP(I4,L1)-X0(1,NT1,L1))
  1551.      1              *LL(1,NT1,LI2)
  1552.       KMAX=NUM(NT+IW) 
  1553.       DO 3100 K=1,KMAX
  1554.       K1=(K-1)/NM(NT+IW)
  1555.       K2=K+(NN(NT+IW)-2*K1-1)*NM(NT+IW) 
  1556.  3100 LUMI(IW,K)=LUMF(NT+IW,K2)-WSOL(IW,K2) 
  1557. C THESE PLOTTING DATA ARE WRITTEN INTO A DATA FILE PLDAT WHICH
  1558. C UPON JOB COMPLETION IS PERMANENTLY PLACED ON PSS-DISK 
  1559.  3200 WRITE(8,8200) NT,NWS,ICLD,N0,N1,IPLOT 
  1560.       WRITE(8,8200)(NM(I),NN(I),I=NT1,NTS)
  1561.       WRITE(8,8100) WSOR,SOLC,SKYC
  1562.       IF(ICLD.EQ.2.OR.ICLD.EQ.4) WRITE(8,8100) HSUND,PSID 
  1563.       WRITE(8,8100) (((XYW(I,I4,I2),I2=1,2),I4=1,2),I=1,N1) 
  1564.       DO 3150 I=1,NWS 
  1565.       KMAX=NUM(NT+I)
  1566.       WRITE(8,8100)(LUMI(I,K),K=1,KMAX) 
  1567.  3150 WRITE(8,8100)((XY(I,I4,I2),I2=1,2),I4=1,4)
  1568.       IF(ICLD.EQ.1.OR.ICLD.EQ.3) GOTO 3400
  1569. C ADDITIONAL PLOTTING DATA ARE GENERATED IF DIRECT SUN PENETRATES 
  1570. C INTO ENCLOSURE, VZ. THE IMAGE OF THE SUNNY AREA ON THE WORKING SURFACE
  1571.       DO 3280 I=1,N0
  1572.       DO 3205 IP=1,4
  1573.       XSUN(I,IP,1)=0. 
  1574.  3205 XSUN(I,IP,2)=0. 
  1575.       ANG(I)=0. 
  1576.       IF(ISUN(I).EQ.0) GOTO 3280
  1577.       DO 3210 L=1,3 
  1578.       PLTTMP(1,L)=X0(1,I,L) 
  1579.       PLTTMP(2,L)=PLTTMP(1,L)+LL(1,I,L)*X0(1,I,5)+LL(1,I,L+3) 
  1580.      1      *X0(1,I,7)
  1581.       PLTTMP(3,L)=PLTTMP(1,L)+LL(1,I,L)*X0(1,I,6)+LL(1,I,L+3) 
  1582.      1      *X0(1,I,7)
  1583.  3210 PLTTMP(4,L)=PLTTMP(1,L)+LL(1,I,L)*X0(1,I,4) 
  1584.       IDENT=0 
  1585.       DO 3250 IP=1,4
  1586.       DO 3220 L=1,3 
  1587.       X(L)=PLTTMP(IP,L) 
  1588.  3220 Y(L)=X(L)-(DW(I)+1E-3)*LL(1,I,L+6)
  1589.       IF(IDENT.NE.0) GOTO 3240
  1590.       CALL SECT(X,LS,1,I+NTS,KUT) 
  1591.       IF(KUT.EQ.1) IDENT=IP 
  1592.  3240 CALL SECT(X,LS,1,NT1,KUT) 
  1593.       XSUN(I,IP,1)=XDP
  1594.       XSUN(I,IP,2)=YDP
  1595.       CALL SECT(Y,LS,1,NT1,KUT) 
  1596.  3250 CONTINUE
  1597.       IAP2=IDENT+2
  1598.       IF (IAP2.GT.4) IAP2=IAP2-4
  1599.       IIII=IDENT+1
  1600.       IF (IIII.GT.4) IIII=IIII-4
  1601.       JJJJ=IDENT+3
  1602.       IF (JJJJ.GT.4) JJJJ=JJJJ-4
  1603.       DX=0. 
  1604.       DY=0. 
  1605.       DO 3260 L=1,3 
  1606.       DX=DX+LS(L)*LL(1,NT1,L) 
  1607.  3260 DY=DY+LS(L)*LL(1,NT1,L+3) 
  1608.       ANG(I)=-180./PI*ATAN(DY/(DX+1E-8))
  1609.       DO 3300 IP=1,ISNGRD 
  1610.       DO 3300 L=1,ISNGRD
  1611. 3300  IMG(I,IP,L)=0 
  1612.       ICNR(I,1)=IDENT 
  1613.       ICNR(I,2)=IIII
  1614.       ICNR(I,3)=JJJJ
  1615.       ICNR(I,4)=IAP2
  1616.       DO 3302 L=1,3 
  1617.       DO 3302 K=1,4 
  1618.       PLTTMP(K,L)=XSUN(I,ICNR(I,K),1)*LL(1,NT1,L) 
  1619.      2 +XSUN(I,ICNR(I,K),2)*LL(1,NT1,L+3) 
  1620.      2 +X0(1,NT1,L) 
  1621. 3302  CONTINUE
  1622.       DO 3390 M=1,ISNGRD
  1623.       DO 3390 N=1,ISNGRD
  1624.       DO 3304 L=1,3 
  1625.       X(L)=(PLTTMP(3,L)-PLTTMP(1,L))*(M-1)/(ISNGRD-1) 
  1626.      1     + PLTTMP(1,L)
  1627.       DUMMY=(PLTTMP(4,L)-PLTTMP(2,L))*(M-1)/(ISNGRD-1)
  1628.      1     + PLTTMP(2,L)
  1629.       X(L)=(DUMMY-X(L))*(N-1)/(ISNGRD-1) + X(L) 
  1630. 3304  CONTINUE
  1631.       CALL SECT(X,LS,1,I+NTS,KUT) 
  1632.       IF (KUT.NE.1) GOTO 3390 
  1633.       DO 3320 IWS=1,NWS 
  1634.       IWSN=NT+IWS 
  1635.       IIOB=IOB(1,IWSN,I)
  1636.       IF (IIOB.LT.1) GO TO 3320 
  1637.       DO 3310 K=1,IIOB
  1638.       JO=JOB(IWSN,I,K)
  1639.       CALL SECT(X,LS,1,JO,KUT)
  1640.       IF (KUT.NE.1) GO TO 3310
  1641.       IF ((YDP+X0(1,JO,3)).LT.X0(1,IWSN,3)) GOTO 3310 
  1642.       IF (I.NE.4) GOTO 3390 
  1643.       GOTO 3390 
  1644. 3310  CONTINUE
  1645. 3320  CONTINUE
  1646.       IF (IOH(I).EQ.0 .OR. KOH(I).EQ.1) GO TO 3370
  1647.       IOHK1=ISTART(I) 
  1648.       IOHK2=ISTART(I+1)-1 
  1649.       DO 3350 IOHK=IOHK1,IOHK2
  1650.       CALL SECT(X,LS,NOH,IOHK,KUT)
  1651.       IF (KUT.EQ.1) GO TO 3390
  1652. 3350  CONTINUE
  1653. 3370  K=IDS(I)
  1654.       IF (K.LT.1) GO TO 3385
  1655.       K2=NW(K)
  1656.       DO 3380 JK=1,K2 
  1657.       CALL SECT(X,LS,K,JK,KUT)
  1658.       IF (KUT.EQ.1) GO TO 3390
  1659. 3380  CONTINUE
  1660. 3385  IMG(I,M,N)=1
  1661. 3390  CONTINUE
  1662.  3280 CONTINUE
  1663.       WRITE(8,8100)(((XSUN(I,IP,J),J=1,2),IP=1,4),ANG(I),I=1,N0)
  1664.       WRITE(8,8200) (((IMG(I,M,N),N=1,ISNGRD),M=1,ISNGRD),
  1665.      2   (ICNR(I,MM),MM=1,4),I=1,N0) 
  1666.  3400 CONTINUE
  1667.       STOP
  1668. C6005 FORMAT(1H1,10X,19HINPUT DATA FOR ROOM/11X,19H*******************/)
  1669.  6005 format(1H1,10X,'INPUT DATA FOR ROOM',/,11X,'*******************',
  1670.      1/)
  1671.  6000 FORMAT(/5X,33HNUMBER OF CLEAR WINDOWS          ,I3/ 
  1672.      1        5X,33H          SHEER CURTAIN WINDOWS  ,I3/ 
  1673.      2        5X,33H          DIFFUSE WINDOWS        ,I3/ 
  1674.      3        5X,33H          WALLS WITHOUT CUT-OUTS ,I3/ 
  1675.      4        5X,33H          WALLS WITH CUT-OUTS    ,I3/ 
  1676.      5        5X,33H          WORKING SURFACES       ,I3/ 
  1677.      6        5X,33H          OUTSIDE ENCLOSURES     ,I3///)
  1678.  6010 FORMAT( 5X,7HSURFACE,I3/5X,10H----------//
  1679.      1       10X,4HX0 =,F6.2,6H  Y0 =,F6.2,6H  Z0 =,F6.2/ 
  1680.      2       10X,4HX1 =,F6.2,6H  X2 =,F6.2,6H  X3 =,F6.2,5H  Y =,F6.2/
  1681.      3       10X,7HBETAX =,F6.1,8H  PSIX =,F6.1,9H  BETAY =,F6.1, 
  1682.      4           8H  PSIY =,F6.1/ 
  1683.      5       10X,14HREFLECTANCE  =,F4.1)
  1684.  6020 FORMAT(10X,15HGRID DIMENSION=,I3,4H  BY,I3//) 
  1685.  6030 FORMAT(10X,23HWINDOW SURROUNDING NO.=,I3,16H  MAINT.FACTOR =,F4.2/
  1686.      1       10X,12HTAU-NORMAL =,F4.2,20H  WINDOW THICKNESS =,F6.2//) 
  1687.  6031 FORMAT(15X,29HWINDOW HAS AN OVERHANG ON TOP/
  1688.      1       20X,6HWIDTH=,F4.1,18H  DIST.FROM GLASS=,F4.1,15H  REFLECTAN
  1689.      2CE =,F4.2)
  1690.  6032 FORMAT(15X,31HWINDOW HAS OVERHANGS BOTH SIDES/
  1691.      1       20X,6HWIDTH=,F4.1,18H  DIST.FROM GLASS=,F4.1,15H  REFLECTAN
  1692.      2CE =,F4.2)
  1693.  6033 FORMAT(15X,34HWINDOW HAS OVERHANG ON BOTTOM ONLY/ 
  1694.      1       20X,6HWIDTH=,F4.1,18H  DIST.FROM GLASS=,F4.1,15H  REFLECTAN
  1695.      2CE =,F4.2)
  1696.  6034 FORMAT(15X,37HWINDOW HAS OVERHANGS ON TOP AND SIDES/
  1697.      1       20X,6HWIDTH=,F4.1,18H  DIST.FROM GLASS=,F4.1,15H  REFLECTAN
  1698.      2CE =,F4.2)
  1699.  6035 FORMAT(15X,38HWINDOW HAS OVERHANGS ON ALL FOUR SIDES/ 
  1700.      1       20X,6HWIDTH=,F4.1,18H  DIST.FROM GLASS=,F4.1,15H  REFLECTAN
  1701.      2CE =,F4.2)
  1702.  6064 FORMAT(10X,47HWINDOW HAS SHEER CURTAIN, SHEER CURTAIN FACTOR=,
  1703.      1       F6.2//)
  1704.  6067 FORMAT(10X,40HDIRECT-SUN TRANSMISSION FRACTION, ALPHA ) 
  1705.  6068 FORMAT(15X,6HWINDOW,I3,8H  ALPHA=,F5.3/)
  1706.  6036 FORMAT(15X,18HOVERHANG IS OPAQUE//) 
  1707.  6037 FORMAT(15X,45HOVERHANG IS SEMI-TRANSPARENT, TRANSMISSIVITY=,F4.2
  1708.      1//) 
  1709.  6038 FORMAT(15X,40HOVERHANG IS TRANSLUCENT, TRANSMISSIVITY=,F4.2//)
  1710.  6040 FORMAT(5X,15HSURROUNDING NO.,I3/5X,18H******************//
  1711.      1      10X,23HNUMBER OF OPAQUE WALLS ,I3/) 
  1712.  6041 FORMAT(//2X,37HINSIDE-OVERHANG LUMINANCES FOR WINDOW,I2,
  1713.      1            15H (FOOT-LAMBERT)/ 
  1714.      2         2X,39H***************************************, 
  1715.      3            15H***************/)
  1716.  6042 FORMAT(10X,10HTOP       ,F7.1)
  1717.  6043 FORMAT(10X,10HLEFT SIDE ,F7.1/
  1718.      1       10X,10HRIGHT SIDE,F7.1)
  1719.  6044 FORMAT(10X,10HBOTTOM    ,F7.1)
  1720.  6045 FORMAT(10X,10HTOP       ,F7.1/
  1721.      1       10X,10HLEFT SIDE ,F7.1/
  1722.      2       10X,10HRIGHT SIDE,F7.1)
  1723.  6046 FORMAT(10X,10HTOP       ,F7.1/
  1724.      1       10X,10HLEFT SIDE ,F7.1/
  1725.      2       10X,10HRIGHT SIDE,F7.1/
  1726.      3       10X,10HBOTTOM    ,F7.1)
  1727.  6050 FORMAT(1H1////5X,30HDIRECT HORIZONTAL INSOLATION  ,F6.2,1X,
  1728.      1       16HWATTS PER SQ.FT./5X,18HLUMINOUS EFFICACY ,F6.1,1X,
  1729.      2       15HLUMENS PER WATT/5X,30HDIFFUSE HORIZONTAL INSOLATION ,
  1730.      3       F6.2,1X,16HWATTS PER SQ.FT./5X,18HLUMINOUS EFFICACY ,
  1731.      4       F6.1,1X,15HLUMENS PER WATT/ 
  1732.      5       5X,22HSKY MODEL             ,I3/ 
  1733.      6       5X,20HGROUND REFLECTANCE  ,F4.2) 
  1734.  6070 FORMAT(//5X,15HWORKING SURFACE,I3/5X,18H******************//
  1735.      1       10X,4HX0 =,F6.2,6H  Y0 =,F6.2,6H  Z0 =,F6.2/ 
  1736.      2       10X,4HX1 =,F6.2,6H  X2 =,F6.2,6H  X3 =,F6.2,5H  Y =,F6.2/
  1737.      3       10X,7HBETAX =,F6.1,8H  PSIX =,F6.1,9H  BETAY =,F6.1, 
  1738.      4           8H  PSIY =,F6.1/ 
  1739.      5       10X,15HGRID DIMENSION=,I3,4H  BY,I3//) 
  1740.  6100 FORMAT(///10X,46HSKY LUMINANCE DETERMINED BY GEOGRAPHICAL DATA /
  1741.      A          15X,24HLATITUDE                ,F6.1,5H DEG./ 
  1742.      B          15X,24HLONGITUDE               ,F6.1,5H DEG./ 
  1743.      C          15X,24HTIME ZONE               ,I4/ 
  1744.      D          15X,24HALTITUDE                ,F6.1,7H METERS/ 
  1745.      E          15X,24HSKY MODEL               ,I4/ 
  1746.      F          15X,24HGROUND REFLECTANCE      ,F7.2) 
  1747.  6110 FORMAT(   15X,24HFIRST MONTH             ,I4/ 
  1748.      A          15X,24HLAST MONTH              ,I4/ 
  1749.      B          15X,24HINCREMENT BETWEEN MONTHS,I4/ 
  1750.      C          15X,24HDAY OF MONTH            ,I4/ 
  1751.      D          15X,24HFIRST TIME OF DAY       ,F6.1,5H HRS./ 
  1752.      E          15X,24HLAST TIME OF DAY        ,F6.1,5H HRS./ 
  1753.      F          15X,24HTIME INCREMENT          ,F6.1,5H HRS.) 
  1754.  6105 FORMAT(///10X,46HSKY LUMINANCE DETERMINED BY SUN POSITON  DATA /
  1755.      A          15X,24HALTITUDE ANGLE          ,F6.1,5H DEG./ 
  1756.      B          15X,24HAZIMUTH ANGLE           ,F6.1,5H DEG./ 
  1757.      D          15X,24HALTITUDE OF STATION     ,F6.1,7H METERS/ 
  1758.      E          15X,24HSKY MODEL               ,I4/ 
  1759.      F          15X,24HGROUND REFLECTANCE      ,F7.2) 
  1760.  6120 FORMAT(15X,45HMONTHLY VALUES FOR TURBIDITY AND COND.WATER../
  1761.      A       20X,20HMONTH  C.W.    TURB.) 
  1762.  6121 FORMAT(21X,I3,2F8.4)
  1763.  6130 FORMAT(//,5X,7HMONTH =,I3,10X,6HTIME =,F5.1,5H HRS./
  1764.      1           5X,36H====================================)
  1765.  6140 FORMAT(5X,20HSUN ALTITUDE ANGLE =,F6.1,/
  1766.      15X,19HSUN AZIMUTH ANGLE =,F6.1,1X,27HDEG. OFF SOUTH TOWARDS EAST) 
  1767.  6200 FORMAT(7X,15F6.0) 
  1768.  6250 FORMAT(//10X,35HILLUMINANCE ON A HORIZONTAL SURFACE/
  1769.      1         15X,16HSOLAR COMPONENT=,F8.0,12H FOOT-CANDLE/
  1770.      2         15X,16HSKY   COMPONENT=,F8.0,12H FOOT-CANDLE/
  1771.      3         10X,17HZENITH LUMINANCE=,F8.0,1X,14H(FT.-LAMBERTS))
  1772.  6300 FORMAT(1H1/15X,47H***********************************************/
  1773.      *       15X,47H*                                             */
  1774.      1       15X,47H* DAYLIGHT ILLUMINATION IN A RECTANGULAR ROOM */
  1775.      *       15X,47H*                                             */
  1776.      2       15X,47H***********************************************// 
  1777.      3       10X,33HROOM HAS A WIDTH (WINDOW WALL) OF,F5.1,6H UNITS/
  1778.      4       10X,33H                       A DEPTH OF,F5.1,6H UNITS/
  1779.      5       10X,33H                  AND A HEIGHT OF,F5.1,6H UNITS/
  1780.      6       10X,47HROOM ORIENTATION (FROM OUTWARD WINDOW NORMAL) =,
  1781.      7               F5.1,15H DEG. OFF SOUTH/)
  1782.  6302 FORMAT(10X,8HROOM HAS,I2,28H WINDOW(S) IN THE FRONT WALL) 
  1783.  6303 FORMAT(10X,8HROOM HAS,I2,37H WINDOW(S) IN THE CEILING (SKYLIGHTS))
  1784.  6310 FORMAT(/10X,10HWINDOW NO.,I2,3H IS,F6.2,14H UNITS WIDE BY,F6.2, 
  1785.      1            11H UNITS HIGH/15X,16HWINDOW CENTER IS,F6.2,
  1786.      2            30H UNITS TO RIGHT OF WALL CENTER/
  1787.      3            31X,F6.2,17H UNITS FROM FLOOR/
  1788.      4        15X,24HWINDOW DISCRETIZATION IS,I3,3H BY,I3)
  1789.  6311 FORMAT(15X,16HWINDOW TYPE IS ",I1,16H" (CLEAR WINDOW))
  1790.  6312 FORMAT(15X,16HWINDOW TYPE IS ",I1,34H" (SHEER CURTAIN, CLEAR FRACT
  1791.      1ION =,F4.2,1H)) 
  1792.  6313 FORMAT(15X,16HWINDOW TYPE IS ",I1,20H" (DIFFUSING WINDOW))
  1793.  6320 FORMAT(15X,23HMAINTENANCE FACTOR    =,F4.2/ 
  1794.      1       15X,23HWINDOW THICKNESS      =,F4.2/ 
  1795.      2       15X,23HWINDOW TRANSMISSIVITY =,F4.2/ 
  1796.      3       15X,23HWINDOW REFLECTANCE    =,F4.2) 
  1797.  6331 FORMAT(10X,32HFRONT  WALL..     DISCRETIZATION,I3,3H BY,I3, 
  1798.      1                                16H, REFLECTANCE  =,F4.2) 
  1799.  6332 FORMAT(10X,32HLEFT SIDE..       DISCRETIZATION,I3,3H BY,I3, 
  1800.      1                                16H, REFLECTANCE  =,F4.2) 
  1801.  6333 FORMAT(10X,32HREAR WALL..       DISCRETIZATION,I3,3H BY,I3, 
  1802.      1                                16H, REFLECTANCE  =,F4.2) 
  1803.  6334 FORMAT(10X,32HRIGHT SIDE..      DISCRETIZATION,I3,3H BY,I3, 
  1804.      1                                16H, REFLECTANCE  =,F4.2) 
  1805.  6335 FORMAT(10X,32HCEILING..         DISCRETIZATION,I3,3H BY,I3, 
  1806.      1                                16H, REFLECTANCE  =,F4.2) 
  1807.  6336 FORMAT(10X,32HFLOOR..           DISCRETIZATION,I3,3H BY,I3, 
  1808.      1                                16H, REFLECTANCE  =,F4.2) 
  1809.  6337 FORMAT(10X,32HWORKING SURFACE.. DISCRETIZATION,I3,3H BY,I3, 
  1810.      1                                13H, ELEVATION =,F5.2,6H UNITS) 
  1811.  6340 FORMAT(/10X,18HSUBJECT BUILDING../
  1812.      1        15X,32HBUILDING WIDTH (FRONT  WALL)   =,F6.1,6H UNITS/
  1813.      2        15X,32HBUILDING HEIGHT                =,F6.1,6H UNITS/
  1814.      3        15X,32HOFFSET TO RIGHT OF ROOM CENTER =,F6.1,6H UNITS/
  1815.      4        15X,32H                REFLECTANCE    =,F7.2) 
  1816.  6350 FORMAT(/10X,13HOBSTRUCTION../ 
  1817.      1        15X,32HOBSTRUCTION WIDTH              =,F6.1,6H UNITS/
  1818.      2        15X,32HOBSTRUCTION HEIGHT             =,F6.1,6H UNITS/
  1819.      3        15X,32HOFFSET TO RIGHT OF ROOM CENTER =,F6.1,6H UNITS/
  1820.      4        15X,32HDISTANCE FROM SUBJECT BUILDING =,F6.1,6H UNITS/
  1821.      5        15X,32H    OBSTRUCTION REFLECTANCE    =,F7.2) 
  1822.  6560 FORMAT(//2X,69HLIGHT EXCHANGE FACTORS FROM SURFACE I TO SURFACE J 
  1823.      1IN SURROUNDING NO.,I2,/2X,71H*************************************
  1824.      2**********************************/)
  1825.  6570 FORMAT(/7X,1HJ,15I8)
  1826.  6572 FORMAT(4X,1HI)
  1827.  6580 FORMAT(2X,I3,5X,15F8.4/)
  1828.  6710 FORMAT(1H1//3X,71H************************************************
  1829.      1***********************/
  1830.      2         3X,71H* DATA FOR SURFACE NODES; I=SURFACE, K=NODE,   X,Y,
  1831.      3Z=COORDINATES (FT) */ 
  1832.      4         3X,71H*                         A=AREA (SQFT), L=LUMINANC
  1833.      5E (FT-LAMBERT)     */ 
  1834.      6         3X,71H***************************************************
  1835.      7********************) 
  1836.  6715 FORMAT(1H1//3X,71H************************************************
  1837.      1***********************/
  1838.      2         3X,71H* DATA FOR WORKING SURFACE NODES; I=SURFACE, K=NODE
  1839.      3-NO.               */ 
  1840.      4         3X,71H*      X,Y,Z=COORDINATES,                          
  1841.      5                   */ ) 
  1842. 6716  FORMAT(  3X,71H*      S=ILLUMINANCE FROM EXTERNAL SOURCES (FOOT-CA
  1843.      7NDLE)              */ 
  1844.      8         3X,71H*      R=INTERNAL REFLECTED COMPONENT (FOOT-CANDLE)
  1845.      9                   */ 
  1846.      A         3X,71H*      I=TOTAL ILLUMINANCE (FOOT-CANDLE), D=DAYLIGH
  1847.      BT FACTOR (PERCENT) */ 
  1848.      6         3X,71H***************************************************
  1849.      7********************) 
  1850.  6717 FORMAT(//10X,53HX = DISTANCE FROM FRONT WALL (PARALLEL TO FRONT WA
  1851.      1LL)/
  1852.      2         10X,64HY = DISTANCE FROM ROOM CENTER LINE (PERPENDICULAR 
  1853.      3TO FRONT WALL)/ 
  1854.      4         14X,37HPOSITIVE VALUES (LEFT OF CENTER LINE)/
  1855.      5         14X,38HNEGATIVE VALUES (RIGHT OF CENTER LINE)/ 
  1856.      6         10X,24HZ = HEIGHT OF WORK PLANE) 
  1857.  6720 FORMAT(//3X,2H*K,12I10) 
  1858.  6730 FORMAT(3X,2HI*/I4,3H  X,12F10.2)
  1859.  6740 FORMAT(6X,1HY,12F10.2)
  1860.  6750 FORMAT(6X,1HZ,12F10.2)
  1861.  6760 FORMAT(6X,1HA,12F10.2)
  1862.  6770 FORMAT(6X,1HL,12F10.2)
  1863.  6773 FORMAT(6X,1HS,12F10.2)
  1864.  6774 FORMAT(6X,1HR,12F10.2)
  1865.  6775 FORMAT(6X,1HI,12F10.2)
  1866.  6780 FORMAT(6X,1HD,12F10.2)
  1867.  7010 FORMAT(//5X,41HLUMINANCE OF SURFACE I IN SURROUNDING NO.,I2,1X,14H
  1868.      1(FT.-LAMBERTS)/5X,58H=============================================
  1869.      2=============)
  1870.  7020 FORMAT(/5X,1HI,15I6)
  1871.  8000 FORMAT(2X,33HTHERE IS TOO MUCH DIRECT SUNLIGHT/ 
  1872.      1       2X,35HAS COMPARED TO TOTAL HEMISPHERICAL,/ 
  1873.      2       2X,20HEXECUTION TERMINATED)
  1874.  8002 FORMAT(32HNO. OF WINDOWS EXCEEDS MAXIMUM 5) 
  1875.  8005 FORMAT(33HILLEGAL REFLECTANCE FOR SURFACE  ,I2, 
  1876.      2        14H IN ENCLOSURE ,I2) 
  1877.  8007 FORMAT(38HNO. OF WORK SURFACES EXCEEDS MAXIMUM 3) 
  1878.  8008 FORMAT(35HNO. OF ENCLOSURES EXCEEDS MAXIMUM 2)
  1879.  8010 FORMAT(41HNO. OF INDOOR SURFACES EXCEEDS MAXIMUM 30)
  1880.  8011 FORMAT(44HNO. OF NODES EXCEEDS 400 FOR INDOOR SURFACE ,I2)
  1881.  8012 FORMAT(40HILLEGAL REFLECTANCE FOR INDOOR SURFACE  ,I2)
  1882.  8014 FORMAT(44HILLEGAL SURFACE OCCUPYING CUTOUT IN SURFACE ,I2)
  1883.  8020 FORMAT(29HILLEGAL ENCLOSURE FOR WINDOW ,I2) 
  1884.  8022 FORMAT(34HILLEGAL TRANSMISSIVITY FOR WINDOW ,I2)
  1885.  8024 FORMAT(38HILLEGAL MAINTENANCE FACTOR FOR WINDOW ,I2)
  1886.  8026 FORMAT(27HILLEGAL GROUND REFLECTANCE )
  1887.  8030 FORMAT(54HTHICKNESS OF CONDENSABLE WATER OUT OF RANGE FOR MONTH , 
  1888.      1    I2) 
  1889.  8032 FORMAT(45HTURBIDITY COEFFICIENT OUT OF RANGE FOR MONTH ,I2) 
  1890.  8034 FORMAT(41HILLEGAL OVERHANG REFLECTANCE FOR WINDOW  ,I2) 
  1891.  8036 FORMAT(43HILLEGAL OVERHANG TRANSMISSIVITY FOR WINDOW ,I2) 
  1892.  8100 FORMAT(6F10.3)
  1893.  8200 FORMAT(20I4)
  1894.       END 
  1895.       FUNCTION C(K,NK)
  1896. C THIS FUNCTION CALCULATES NEWTON-COTES COEFFICIENTS FOR NUMERICAL
  1897. C QUADRATURE
  1898.       C=1.
  1899.       IF(NK.EQ.1)RETURN 
  1900.       I=(K+1)/2-K/2 
  1901.       A=1+2*(1-I)+((K+100)/102)-(K/NK)
  1902.       C=A/(3.*(NK-1.))
  1903.       RETURN
  1904.       END 
  1905.       SUBROUTINE SECT(X,Y,K,J,KUT)
  1906. C THIS ROUTINE CHECKS WHETHER A RAY GOING FROM X INTO DIRECTION Y CUTS
  1907. C    SURFACE J IN ENCLOSURE K FROM ITS FRONT SIDE (KUT=1) OR NOT (KUT=0)
  1908.       REAL X(3),Y(3),X0(4,30,7),LL(4,30,9)
  1909.       COMMON /BLK1/ X0,LL,XDP,YDP 
  1910. C INTERSECTION POINT IN LOCAL COORDINATES 
  1911.       BN=0. 
  1912.       BD=0. 
  1913.       DO 1 I=1,3
  1914.       BN=BN+(X(I)-X0(K,J,I))*LL(K,J,I+6)
  1915.     1 BD=BD+ Y(I)*LL(K,J,I+6) 
  1916.       BD=BD+1E-10+BD*1E-5 
  1917.       B=BN/BD 
  1918.       XDP=0.
  1919.       YDP=0.
  1920.       DO 2 I=1,3
  1921.       CC=X(I)-X0(K,J,I)-B*Y(I)
  1922.       XDP=XDP+CC*LL(K,J,I)
  1923.     2 YDP=YDP+CC*LL(K,J,I+3)
  1924.       KUT=0 
  1925. C WITHIN CONFINES OF SURFACE? 
  1926.       ETA=YDP/X0(K,J,7) 
  1927.       IF(ETA.LT.0..OR.ETA.GT.1.) RETURN 
  1928.       XI=(XDP-ETA*X0(K,J,5))/(X0(K,J,4)-(X0(K,J,4)-X0(K,J,6)+ 
  1929.      1   X0(K,J,5))*ETA)
  1930.       IF(XI.LT.-1.E-5.OR.XI.GT.1.00001) RETURN
  1931. C IS IT HITTING TOP OF SURFACE? 
  1932.       KUT=1-(Y(1)*LL(K,J,7)+Y(2)*LL(K,J,8)+Y(3)*LL(K,J,9))*1E-4 
  1933.       RETURN
  1934.       END 
  1935.       SUBROUTINE CONFAC(J,NT,F) 
  1936. C THIS ROUTINE CALCULATES EXCHANGE FACTORS FOR ENCLOSURE J WITH NT
  1937. C SURFACES, INCLUDING EXCHANGE FACTORS TO SKY WITH LUMINANCE VARIATION
  1938.       REAL X0(4,30,7),LL(4,30,9),F(4,30,30),X(3),Y(3),
  1939.      1     A(4,30),RS(4),LPZ
  1940.       INTEGER NW(6),IOB(4,30,30),KJOB(4,30,30)
  1941.       INTEGER*4 ISEED
  1942.       COMMON /BLK1/ X0,LL,XDP,YDP 
  1943.       COMMON /BLK2/ NW,PI,IOB,ICLD,ISEED,NBUNDL,A,KJOB
  1944.       NT1=NT+1
  1945.       DO 10 I=1,NT
  1946.       DO 5 IR=1,NT1 
  1947.     5 F(J,I,IR)=0.
  1948.       XY=(X0(J,I,6)-X0(J,I,5))/X0(J,I,4)
  1949.       ID1=1 
  1950.       IF(ABS(XY-1).LT.1E-3)ID1=0
  1951.       AX=ID1*XY 
  1952. C CALCULATION OF COORDINATES AND DIRECTION COSINES OF LIGHT BUNDLE
  1953.       DO 60 N=1,NBUNDL
  1954.       TT=1. 
  1955. C ************************ RANDOM NUMBER GENERATOR ********************** 
  1956.       DO 115,INDEX=1,4
  1957. 115   RS(INDEX)=RANDOM(ISEED)
  1958.       YY=(1-SQRT(1-(1-XY*XY)*RS(1)))/(1-AX)+(1-ID1)*RS(1) 
  1959.       XX=X0(J,I,5)*YY+X0(J,I,4)*(1-(1-XY)*YY)*RS(2) 
  1960.       SINB=SQRT(RS(3))
  1961.       COSB=SQRT(1.-RS(3)) 
  1962.       THET=2.*PI*RS(4)
  1963.       COST=COS(THET)
  1964.       SINT=SIN(THET)
  1965.       DO 30 L=1,3 
  1966.       X(L)=X0(J,I,L)+LL(J,I,L)*XX+LL(J,I,L+3)*YY*X0(J,I,7)
  1967.       Y(L)=(LL(J,I,L)*COST+LL(J,I,L+3)*SINT)*SINB+LL(J,I,L+6)*COSB
  1968.   30  CONTINUE
  1969. C DETERMINATION OF SURFACE INTERSECTED BY LIGHT BUNDLE
  1970.       DO 80 IR=1,NT 
  1971.       IF(IOB(J,I,IR)) 80,70,50
  1972.    50 IMARK=KJOB(J,I,IR)
  1973.       CALL SECT(X,Y,J,IMARK,KUT)
  1974.       IF(KUT.EQ.1) GOTO 60
  1975.    70 IMARK=IR
  1976.       CALL SECT(X,Y,J,IR,KUT) 
  1977.       IMARK=IR
  1978.       IF(KUT.EQ.1) GOTO 60
  1979.    80 CONTINUE
  1980. C EVALUATION OF F I-J IF BUNDLE INTERSECTS SKY, (OR GROUND IF Y POINTS BELOW HORIZ) 
  1981.       IMARK=NT1 
  1982.       TT=RLPZ(ICLD,Y) 
  1983.    60 F(J,I,IMARK)=F(J,I,IMARK)+TT
  1984.       DO 130 IR=1,NT1 
  1985.   130 F(J,I,IR)=F(J,I,IR)/NBUNDL
  1986.    10 CONTINUE
  1987. C AVERAGING OF F I-J BASED UPON SURFACE AREA
  1988.       DO 220 I=1,NT 
  1989.       DO 220 IR=I,NT
  1990.       WF=1-EXP(-A(J,I)/A(J,IR))+EXP(-A(J,IR)/A(J,I))
  1991.       AF=((2-WF)*A(J,I)*F(J,I,IR)+WF*A(J,IR)*F(J,IR,I))/2.
  1992.       F(J,I,IR)=AF/A(J,I) 
  1993.   220 F(J,IR,I)=AF/A(J,IR)
  1994.       RETURN
  1995.       END 
  1996.       FUNCTION TAUB(I,CB) 
  1997. C THIS ROUTINE CALCULATES THE TRANSMISSIVITY OF WINDOW I FOR DIRECTION
  1998. C CB (COSINE OF POLAR ANGLE)
  1999.       REAL AK2(10),TAU(10)
  2000.       COMMON /BLK3/ AK2,TAU,NC
  2001.       TAUB=1.018*AK2(I)*TAU(I)*CB*(1.+(1.-CB*CB)**1.5)
  2002.       IF (I.GT.NC) TAUB=TAU(I)
  2003.       RETURN
  2004.       END 
  2005.       FUNCTION RLPZ(ICLD,Y) 
  2006. C THIS ROUTINE CALCULATES SKY-LUMINANCE (NORMALIZED BY ZENITH LUMINANCE)
  2007. C   FOR ANY GIVEN DIRECTION AND SKY CONDITION 
  2008.       REAL Y(3),LS(3) 
  2009.       COMMON /BLK4/ BETAS,LS,AUX(3),GRNDL 
  2010.       IF (Y(3).GT..001) GOTO 10 
  2011. C HITS GROUND 
  2012.       RLPZ=GRNDL
  2013.       RETURN
  2014.    10 GOTO(1,2,3,2),ICLD
  2015. C OVERCAST SKY
  2016.     1 IY=.999+Y(3)
  2017.       RLPZ=AUX(1)+IY*Y(3)*AUX(2)
  2018.       RETURN
  2019. C CLEAR SKY 
  2020.     2 CD=Y(1)*LS(1)+Y(2)*LS(2)+Y(3)*LS(3) 
  2021.       RLPZ=(1.-EXP(-.32/Y(3)))*(.91+10*EXP(-3*ACOS(CD))+.45*CD*CD)
  2022.      1     /AUX(3)
  2023.       RETURN
  2024. C UNIFORM SKY 
  2025.     3 RLPZ=1. 
  2026.       RETURN
  2027.       END 
  2028.       SUBROUTINE MATINV(A,N,B,M,DETERM) 
  2029.       DIMENSION IPIVOT(30),A(30,30),B(30,1),INDEX(30,2),PIVOT(30) 
  2030.       EQUIVALENCE (IROW,JROW), (ICOLUM,JCOLUM), (AMAX, T, SWAP) 
  2031.       DETERM=1.0
  2032.       DO 20 J=1,N 
  2033.    20 IPIVOT(J)=0 
  2034.       DO 550 I=1,N
  2035.       AMAX=0.0
  2036.       DO 105 J=1,N
  2037.       IF (IPIVOT(J)-1) 60, 105, 60
  2038.    60 DO 100 K=1,N
  2039.       IF (IPIVOT(K)-1) 80, 100, 740 
  2040.    80 IF (ABS(AMAX)-ABS(A(J,K))) 85, 100, 100 
  2041.    85 IROW=J
  2042.       ICOLUM=K
  2043.       AMAX=A(J,K) 
  2044.   100 CONTINUE
  2045.   105 CONTINUE
  2046.       IF(AMAX) 110,800,110
  2047.   110 IPIVOT(ICOLUM)=IPIVOT(ICOLUM)+1 
  2048.       IF (IROW-ICOLUM) 140, 260, 140
  2049.   140 DETERM=-DETERM
  2050.       DO 200 L=1,N
  2051.       SWAP=A(IROW,L)
  2052.       A(IROW,L)=A(ICOLUM,L) 
  2053.   200 A(ICOLUM,L)=SWAP
  2054.       IF(M) 260, 260, 210 
  2055.   210 DO 250 L=1, M 
  2056.       SWAP=B(IROW,L)
  2057.       B(IROW,L)=B(ICOLUM,L) 
  2058.   250 B(ICOLUM,L)=SWAP
  2059.   260 INDEX(I,1)=IROW 
  2060.       INDEX(I,2)=ICOLUM 
  2061.       PIVOT(I)=A(ICOLUM,ICOLUM) 
  2062.       DETERM=DETERM*PIVOT(I)
  2063.       A(ICOLUM,ICOLUM)=1.0
  2064.       DO 350 L=1,N
  2065.   350 A(ICOLUM,L)=A(ICOLUM,L)/PIVOT(I)
  2066.       IF(M) 380, 380, 360 
  2067.   360 DO 370 L=1,M
  2068.   370 B(ICOLUM,L)=B(ICOLUM,L)/PIVOT(I)
  2069.   380 DO 550 L1=1,N 
  2070.       IF(L1-ICOLUM) 400, 550, 400 
  2071.   400 T=A(L1,ICOLUM)
  2072.       A(L1,ICOLUM)=0.0
  2073.       DO 450 L=1,N
  2074.   450 A(L1,L)=A(L1,L)-A(ICOLUM,L)*T 
  2075.       IF(M) 550, 550, 460 
  2076.   460 DO 500 L=1,M
  2077.   500 B(L1,L)=B(L1,L)-B(ICOLUM,L)*T 
  2078.   550 CONTINUE
  2079.       DO 710 I=1,N
  2080.       L=N+1-I 
  2081.       IF (INDEX(L,1)-INDEX(L,2)) 630, 710, 630
  2082.   630 JROW=INDEX(L,1) 
  2083.       JCOLUM=INDEX(L,2) 
  2084.       DO 705 K=1,N
  2085.       SWAP=A(K,JROW)
  2086.       A(K,JROW)=A(K,JCOLUM) 
  2087.       A(K,JCOLUM)=SWAP
  2088.   705 CONTINUE
  2089.   710 CONTINUE
  2090.   740 RETURN
  2091.   800 DETERM = 0. 
  2092.       RETURN
  2093.       END 
  2094.       SUBROUTINE ZENLCD(P,W,BETA,H,ZENL)
  2095. C  THIS SUBROUTINE CALCULATES ZENITH LUMINANCE BASED ON 
  2096. C  LIEBELT'S EQUATION WHEN SOLAR ALTITUDE IS LESS THAN
  2097. C  60.  WHEN SOLAR ALTITUDE IS GREATER THAN 60, THE ZENITH
  2098. C  LUMINANCE IS EXTRAPOLATED TO RESULT INTEGRATED HORIZONTAL
  2099. C  ILLUMINANCE FOLLOWS SINE CURVE. 4/10/83 JJK. 
  2100.       PI=4.*ATAN(1.)
  2101.       HD=H*180./PI
  2102.       T=TUR(HD,W,BETA)
  2103.       ZENL=((1.34*T-3.46)*TAN(H)+0.1*T+0.9)*291.87
  2104.       IF(HD.LT.60.)RETURN 
  2105.       ZEN60=((1.34*T-3.46)*TAN(1.0472)+0.1*T+0.9)*291.87
  2106.       P60=SKYSUM(0.5236)
  2107.       ZENL=1.1547*ZEN60*P60*SIN(H)/P
  2108.       RETURN
  2109.       END
  2110.       SUBROUTINE SOLAR (DLAT,LNG,TZN,M,TIME,ISUN,THETA,PHI) 
  2111. C  TO FIND THE POSITION OF THE SUN
  2112. C  INPUT
  2113. C    DLAT  - LATITUDE
  2114. C    LNG  - LONGITUDE 
  2115. C    TZN  - TIME ZONE(HOURS BEHIND GREENWICH MEAN TIME
  2116. C            4- ATLANTIC
  2117. C            5- EASTERN 
  2118. C            6- CENTRAL 
  2119. C            7- MOUNTAIN
  2120. C            8- PACIFIC 
  2121. C    M    - MONTH(01-12)
  2122. C    TIME - HOURS FROM MIDNIGHT 
  2123. C  OUTPUT 
  2124. C    THE ALTITUDE AND AZIMUTH ANGLES OF THE SUN.
  2125.       REAL LAT, LNG 
  2126.       INTEGER TZN 
  2127.       DIMENSION DEC(12), ET(12) 
  2128.       DATA (DEC(J), J=1,12)/ -0.3491, -0.1885,  0.0   ,  0.2025,
  2129.      $                        0.3491,  0.4093,  0.3595,  0.2147,
  2130.      $                        0.0   , -0.1833, -0.3456, -0.4093/
  2131.       DATA (ET(J), J=1,12)/ -0.190, -0.230, -0.123,  0.020, 
  2132.      $                        0.060, -0.025, -0.103,-0.051, 
  2133.      $                        0.113,  0.255,  0.235,  0.033/
  2134.       DATA PI/3.1415926/
  2135.       DATA CNVRT/0.017453295/ 
  2136. C  WHEN SUN IS DOWN THERE IS NO RADIATION 
  2137.       LAT = DLAT*CNVRT
  2138.       SPAN = ACOS(-TAN(LAT)*TAN(DEC(M)))
  2139.       HANG =-(15.0*(TIME - 12.0 + TZN + ET(M)) - LNG)*CNVRT 
  2140.       CHANG = COS(HANG) 
  2141.       IF(ABS(HANG) .GT. ABS(SPAN)) THEN 
  2142.           ISUN = 0
  2143. C  WHEN SUN IS UP, FIND ITS ORIENTATION 
  2144.       ELSE
  2145.           ISUN = 1
  2146.           COSZ = SIN(LAT)*SIN(DEC(M)) + 
  2147.      $           COS(LAT)*COS(DEC(M))*COS(HANG) 
  2148.           COSW = COS(DEC(M))*SIN(HANG)
  2149.       TEST = 1.0 - COSZ**2 + COSW**2
  2150.       ARG = TAN(DEC(M))/TAN(LAT)
  2151.       IF (TEST .LE. 0.0) THEN 
  2152.       COSS = 0.0
  2153.       ELSEIF (CHANG .LE. ARG) THEN
  2154.       COSS = -SQRT(TEST)
  2155.       ELSE
  2156.       COSS = SQRT(TEST) 
  2157.       ENDIF 
  2158.       THETA = ASIN(COSZ)
  2159.       CHECK = COSW/COS(THETA) 
  2160.       IF (CHECK .GE. 1.0) THEN 
  2161.       ANG = PI/2.0
  2162.       ELSEIF (CHECK .LE. -1.0) THEN
  2163.       ANG = -PI/2.0 
  2164.       ELSE
  2165.       ANG = ASIN(CHECK) 
  2166.       ENDIF 
  2167.       IF (COSS .GT. 0.0) THEN
  2168.       PHI = ANG 
  2169.       ELSE
  2170.       PHI = PI - ANG
  2171.       ENDIF 
  2172.       ENDIF 
  2173.       RETURN
  2174.       END 
  2175.       FUNCTION E(DATE,IWMOD)
  2176.       REAL OMEGA
  2177.       DATA OMEGA/.01715/
  2178.       A = OMEGA*DATE
  2179.       IF(IWMOD.NE.3) GOTO 100 
  2180.       E=128.8 
  2181.       RETURN
  2182.   100 E = 128.82 + 4.248*COS(A) + 0.0825*COS(2.0*A) 
  2183.      $-0.00043*COS(3.0*A) + 0.169*SIN(A) + 0.00914*SIN(2.0*A) 
  2184.      $+0.01726*SIN(3.0*A) 
  2185.       RETURN
  2186.       END 
  2187.       FUNCTION ABAR(T,BETA) 
  2188.       DIMENSION A(3),B(3) 
  2189.       DATA (A(I),I=1,3)/0.1512,0.1656,0.2021/ 
  2190.       DATA (B(I),I=1,3)/0.0262,0.0215,0.0193/ 
  2191.       INDEX=3 
  2192.       IF (BETA .LE. .15) INDEX=2
  2193.       IF (BETA .LE. .075) INDEX=1 
  2194.       ABAR = A(INDEX) - T*B(INDEX)
  2195.       RETURN
  2196.       END 
  2197.       FUNCTION TUR(HD,W,BETA) 
  2198.       TUR=(HD + 85.0)/(39.5*EXP(-W) + 47.4) + 0.1 
  2199.      $+ (16.0+0.22*W)*BETA
  2200.       RETURN
  2201.       END 
  2202.       FUNCTION AIR(H,ALT) 
  2203.       AIR = SIN(H) + 0.15*(H*57.29578+3.885)**(-1.253)
  2204.       AIR = 1/AIR 
  2205.       AIR = AIR*(1.0-1.E-4*ALT) 
  2206.       RETURN
  2207.       END 
  2208.       FUNCTION DIR(MONTH,IDAY,BETA,W,ALT,H) 
  2209.       DATA CFAC/92.904/ 
  2210. C CFAC CONVERTS FROM KLX TO FT-CANDLES
  2211.       HD = H*57.2958
  2212.       T = TUR(HD,W,BETA)
  2213.       A = ABAR(T,BETA)
  2214.       AMAS = AIR(H,ALT) 
  2215.       DATE = FLOAT(JDATE(MONTH,IDAY)) 
  2216.       DIR = CFAC*E(DATE,IWMOD)*EXP(-A*AMAS*T)*SIN(H)
  2217.       RETURN
  2218.       END 
  2219.       FUNCTION JDATE(MONTH,IDAY)
  2220.       DIMENSION NDAY(12)
  2221.       DATA (NDAY(I),I=1,12)/31,28,31,30,31, 
  2222.      $30,31,31,30,31,30,31/ 
  2223.       JDATE = 0 
  2224.       IF (MONTH .EQ. 1) GO TO 200 
  2225.       M1=MONTH-1
  2226.       DO 100 I=1,M1 
  2227.       JDATE = JDATE + NDAY(I) 
  2228.   100 CONTINUE
  2229.   200 JDATE = JDATE + IDAY
  2230.       RETURN
  2231.       END 
  2232.       FUNCTION SKYSUM(H)
  2233. C --  THIS SUBROUTINE CALCULATES SKY LUMINANCE INTEGRATION FOR
  2234. C--   CLEAR SKY 
  2235.       PI=4.*ATAN(1.)
  2236.       P1=.27385*(.91+10.*EXP(-3*H)+.45*COS(H)**2) 
  2237.       P=0.
  2238.       CBS=COS(H)
  2239.       SBS=SIN(H)
  2240.       DO 100 K=1,21 
  2241.       ETAK=(K-1.)/20. 
  2242.       RT=SQRT(1.-ETAK**2) 
  2243.       P2=0. 
  2244.       IF(K.GT.1)P2=(1.-EXP(-.32/ETAK))*C(K,21)*ETAK 
  2245.       DO 100 L=1,21 
  2246.       ETA=(L-1.)/20.
  2247.       CDEL=CBS*ETAK+SBS*RT*COS(PI*ETA)
  2248.   100 P=P+P2*(.91+10.*EXP(-3*ACOS(CDEL))+.45*CDEL**2)*C(L,21) 
  2249.       SKYSUM=2./P1*P
  2250.       RETURN
  2251.       END 
  2252. C
  2253.       FUNCTION RANDOM(ISEED)
  2254.       INTEGER*4 ISEED
  2255.       ISEED=DMOD(16807.0D0 * ISEED,2147483647.0D0)
  2256.       RANDOM=ISEED * 4.6566128752458D-10
  2257.       RETURN
  2258.       END
  2259.       SUBROUTINE LOGO(N)
  2260. C     THIS ROUTINE PRINTS THE SUPERLITE NOTICE TO THE UNIT
  2261. C     SPECIFIED AS 'N'
  2262. C     CURRENTLY N=6 SENDS NOTICE TO SCREEN ON VAX.  FOR BATCH
  2263. C     MACHINES THIS CAN BE SET TO THE APPROPRIATE DEVICE
  2264.       WRITE(*,100)
  2265.  100  FORMAT(/////////
  2266.      *6X,'                 S  U  P  E  R  L  I  T  E    1 . 0'/
  2267.      *//
  2268.      *6X,'                           DEVELOPED BY:'/
  2269.      */
  2270.      *6X,'                    WINDOWS AND DAYLIGHTING GROUP'/
  2271.      *6X,'                    LAWRENCE BERKELEY LABORATORY'/
  2272.      *6X,'                      UNIVERSITY OF CALIFORNIA'/
  2273.      *6X,'                        BERKELEY, CA  94720'/
  2274.      *///
  2275.      *6X,'      COPYRIGHT 1985  REGENTS OF THE UNIVERSITY OF CALIFORNIA'
  2276.      *//)
  2277.       END
  2278.